011194
2012/03/06(火) 14:09:03.26public class FrameA extends JFrame
{
final JFrame frameA = this; //これで期待通り動いた[PPP]
JMenuItem menuItemForB = new JMenuItem();
menuItemForB.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
panelB = new PanelB(frameA); //[QQQ]
}
}
);
}
public class PanelB extends JPanel
{
public PanelB(FrameA frameA) //frameAの参照を引数で渡す[RRR]
{
//ここから frameA を操作するために frameA を参照する
}
}
[PPP] のように単純に FrameA の this を取って [QQQ] [RRR] のように引数で渡したところ期待通り
PanelB の内部から frameA を参照して操作できるようになりました。動かなかった原因は [PPP] の
this のかわりに>>96に書いたaRootを使っていたことでした。これでOKですが、もし [RRR]のように
引数で親の参照を渡すのより良い方法がSwingプログラムの常套手段にあるようならお教えください。