Java低速GUI Swing 10 (492レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
111(2): 94 2012/03/06(火)14:09 AAS
>>102 さまはじめみなさま どうもありがとうございました。やりたかったのは次のようなことでした。
public 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プログラムの常套手段にあるようならお教えください。
114: 94 2012/03/06(火)16:20 AAS
>>113
なるほど FrameA の中で PanelB を定義すれば FrameA.this が見えるわけですね。
なお >>111に示したコードの前半もほんとうは>>113のように FrameA の
コンストラクタ内にあったんですが貼り付けるときに削除してしまっていました。
Swing も内部クラスも使ったことがなかったので勉強になります。ただ、PanelB の
コードは FrameA から独立させて書いておきたいので、Swing のマナー違反でない
限り >>111のような引数渡しの方法を使おうと思っています。どうもありがとうございました。
116: 94 2012/03/06(火)17:45 AAS
>>115
いちいちframeAに代入したりしないで直接FrameA.thisを渡すということですね。
>>111 よりスマートだしいけそうですね。どうもありがとうございます。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.020s