導入
Java にて、JFrameをextendsしたクラスAに、JPanelをextendsしたクラスBをadd。 この時、クラスB内の処理で、クラスAのJFrameをdisposeしたいが、方法がなかなかわからなかったので記録。問題点
クラスB内のJButtonにActionListenerを加えて、ボタンを押すと呼び出し元のJFrameを閉じたい! getparentかと思ったが、こちが取得するのは、親コンテナ(Container)なので、disposeはできない。解決
色々調べたところ、SwingUtilitiesクラスのgetWindowAncestor()メソッドで、親ウィンドウが取得できるとのこと。 これをそのままdispose()すると、行いたい動きが実装できました。SwingUtilities.getWindowAncestor(this).dispose();