2016-11-24 10 views
0

JPanelを構築していて、JInternalFrameに与えられています。今私は誰かがJInternalFrameのXボタンをクリックすると、それは隠されていて閉じられていないことを望んでいます。問題はJPanelでこの関数を実装する必要があり、JInternalFrameへのアクセス権がないことです。JPanelからJInternalFrameを隠す

これは可能ですか?

私はJInternalFrameから、setDefaultCloseOperation(HIDE_ON_CLOSE);で実現できますが、私はJPanelからどうやってやるのか分かりません。もちろん私はSOで検索しましたが、私のケースに合ったものは見つかりませんでした。

Xボタンをクリックしたときに何が起こっているのかを理解するためだけの質問ですか? dispose()関数が呼び出されていますか?私はJava Swingの新機能で、どのように動作するのか興味があります。

+0

*この可能です*いいえ、それはないですか。はい、disposeメソッドは、ユーザーが "X"をクリックしたときに呼び出されます。 –

答えて

1

が、私はあなたが親コンテナを見つけるためにSwingUtilitiesクラスを使用することができますJPanelの

からどのように行うのか分かりません。以下のような

何か:

JInternalFrame frame = (JInternalFrame)SwingUtilities.ancestorOfClass(JInternalFrame.class, thePanel); 
+0

Panelを初期化するときに親コンテナがないため、NullPointerExceptionが発生します。私は後でそれを使用することはできませんが、ありがとう – Ludy

+0

@ルディ、ありがとう。コンポーネントを作成するときには、そのコードを実行してはいけません。上記のコードは、あなたがパネルに追加するボタンに追加する 'ActionListener'で実行されます。 – camickr

+0

今私はあなたの行を使用する方法を見つけました。 AncestorListenerが私のために働いています。私のソリューションを投稿する必要がありますか? – Ludy

関連する問題