Swing/CloseInternalFrame の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/CloseInternalFrame へ行く。
- Swing/CloseInternalFrame の差分を削除
--- category: swing folder: CloseInternalFrame title: JInternalFrameを閉じる tags: [JInternalFrame, JDesktopPane, DesktopManager] author: aterai pubdate: 2008-05-05T20:51:51+09:00 description: 選択中のJInternalFrameをDesktopManagerなどを使用して外部から閉じる(JDesktopPaneから除去する)方法をテストします。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTJcTXtdNI/AAAAAAAAAUY/zL_wkJJa_Ks/s800/CloseInternalFrame.png --- * 概要 [#summary] 選択中の`JInternalFrame`を`DesktopManager`などを使用して外部から閉じる(`JDesktopPane`から除去する)方法をテストします。 #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTJcTXtdNI/AAAAAAAAAUY/zL_wkJJa_Ks/s800/CloseInternalFrame.png) * サンプルコード [#sourcecode] #code(link){{ 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(); } } }; }} * 解説 [#explanation] 上記のサンプルでは、選択されている`JInternalFrame`をツールバーのボタンやKBD{Esc}キー(`OS`が`Windows`の場合のデフォルトはKBD{Ctrl+F4})で閉じることができます。 - `RED` -- `JInternalFrame#dispose()`メソッドを使用 -- 閉じた後、他のフレームに選択状態が移動しない - `GREEN` -- `DesktopManager#closeFrame(JInternalFrame)`メソッドを使用 - `BLUE` -- `JInternalFrame#doDefaultCloseAction()`メソッドを使用 - `YELLOW` -- `JInternalFrame#setClosed(true)`メソッドを使用 ---- - `JDK 1.5` + `WindowsLookAndFeel`では`JInternalFrame`を閉じたときアイコン化されている`JInternalFrame`には選択状態は移動しない * 参考リンク [#reference] - [http://mail.openjdk.java.net/pipermail/swing-dev/2013-April/002688.html <Swing Dev> 8 Review request for 8012004: JINTERNALFRAME NOT BEING FINALIZED AFTER CLOSING] - [https://mail.openjdk.org/pipermail/swing-dev/2013-April/002688.html <Swing Dev> 8 Review request for 8012004: JINTERNALFRAME NOT BEING FINALIZED AFTER CLOSING] - [https://bugs.openjdk.org/browse/JDK-4759312 JDK-4759312 JInternalFrame Not Being Finalized After Closing - Java Bug System] * コメント [#comment] #comment #comment