Swing/HideTaskbarButton の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/HideTaskbarButton へ行く。
- Swing/HideTaskbarButton の差分を削除
--- category: swing folder: HideTaskbarButton title: TrayIconの使用中にJFrameを最小化したとき、タスクバーボタンを非表示にする tags: [TrayIcon, SystemTray, JFrame] author: aterai pubdate: 2015-01-12T02:04:17+09:00 description: TrayIconを使用中にJFrameを最小化した場合に、そのアプリケーションのタスクバーボタンを表示するかどうかを切り替えます。 image: https://lh4.googleusercontent.com/-tzpDxy7_qEA/VLKpHbpgC8I/AAAAAAAANuw/sRLjm08PrO8/s800/HideTaskbarButton.png --- * 概要 [#summary] `TrayIcon`を使用中に`JFrame`を最小化した場合に、そのアプリケーションのタスクバーボタンを表示するかどうかを切り替えます。 #download(https://lh4.googleusercontent.com/-tzpDxy7_qEA/VLKpHbpgC8I/AAAAAAAANuw/sRLjm08PrO8/s800/HideTaskbarButton.png) * サンプルコード [#sourcecode] #code(link){{ frame.addWindowListener(new WindowAdapter() { @Override public void windowIconified(WindowEvent e) { if (check.isSelected()) { e.getWindow().dispose(); } } }); // or // frame.addWindowStateListener(new WindowStateListener() { // @Override public void windowStateChanged(WindowEvent e) { // if (check.isSelected() && e.getNewState() == Frame.ICONIFIED) { // e.getWindow().dispose(); // } // } // }); }} * 解説 [#explanation] 上記のサンプルでは、`WindowListener#windowIconified(...)`で`JFrame`が最小化(アイコン化)された場合、`Window#dispose()`でネイティブリソースを開放してタスクバーボタンを非表示にしています。 - `WindowListener#windowIconified(...)`で`JFrame`が最小化(アイコン化)された場合、`Window#dispose()`でネイティブリソースを開放してタスクバーボタンを非表示に変更 - タスクバーボタン: 上記の`Windows 7`でのスクリーンショットでは左下にあるサイズ`40x40`のアイコンが表示されているボタン - `frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);`を設定している場合、`Java`仮想マシン(`JVM`)内で最後の表示可能なウィンドウを`dispose()`すると通常は`JVM`も終了するが、このサンプルでは`SystemTray`に`TrayIcon`が残っているので`JVM`は終了しない - この後`tray.remove(icon);`で`TrayIcon`を`SystemTray`から削除すると`JVM`は終了する * 参考リンク [#reference] - [[SystemTrayにアイコンを表示>Swing/SystemTray]] - [https://docs.oracle.com/javase/jp/8/docs/api/java/awt/SystemTray.html SystemTray (Java Platform SE 8)] * コメント [#comment] #comment #comment