JInternalFrameを閉じる
Total: 9554
, Today: 1
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
選択中のJInternalFrame
をDesktopManager
などを使用して外部から閉じる(JDesktopPane
から除去する)方法をテストします。
Screenshot
Advertisement
サンプルコード
closeSelectedFrameAction1 = new AbstractAction() {
@Override public void actionPerformed(ActionEvent e) {
JInternalFrame f = desktop.getSelectedFrame();
if (f != null) {
desktop.getDesktopManager().closeFrame(f);
}
}
};
closeSelectedFrameAction2 = new AbstractAction() {
@Override public void actionPerformed(ActionEvent e) {
JInternalFrame f = desktop.getSelectedFrame();
if (f != null) {
f.doDefaultCloseAction();
}
}
};
closeSelectedFrameAction3 = new AbstractAction() {
@Override public void actionPerformed(ActionEvent e) {
try {
JInternalFrame f = desktop.getSelectedFrame();
if (f != null) {
f.setClosed(true);
}
} catch (PropertyVetoException ex) {
ex.printStackTrace();
}
}
};
disposeSelectedFrameAction = new AbstractAction() {
@Override public void actionPerformed(ActionEvent e) {
JInternalFrame f = desktop.getSelectedFrame();
if (f != null) {
f.dispose();
}
}
};
View in GitHub: Java, Kotlin解説
上記のサンプルでは、選択されているJInternalFrame
をツールバーのボタンやEscキー(OS
がWindows
の場合のデフォルトはCtrl+F4)で閉じることができます。
RED
JInternalFrame#dispose()
メソッドを使用- 閉じた後、他のフレームに選択状態が移動しない
GREEN
DesktopManager#closeFrame(JInternalFrame)
メソッドを使用
BLUE
JInternalFrame#doDefaultCloseAction()
メソッドを使用
YELLOW
JInternalFrame#setClosed(true)
メソッドを使用
JDK 1.5
+WindowsLookAndFeel
ではJInternalFrame
を閉じたときアイコン化されているJInternalFrame
には選択状態は移動しない
参考リンク
- <Swing Dev> 8 Review request for 8012004: JINTERNALFRAME NOT BEING FINALIZED AFTER CLOSING
- JDK-4759312 JInternalFrame Not Being Finalized After Closing - Java Bug System