Swing/HideTaskbarButton のバックアップの現在との差分(No.3)
- 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:
概要
TrayIcon
を使用中にJFrame
を最小化した場合に、そのアプリケーションのタスクバーボタンを表示するかどうかを切り替えます。
Screenshot
Advertisement
サンプルコード
frame.addWindowListener(new WindowAdapter() {
@Override public void windowIconified(WindowEvent e) {
if (check.isSelected()) {
e.getWindow().dispose();
}
}
});
#spandel
//or
#spanend
#spandel
//frame.addWindowStateListener(new WindowStateListener() {
#spanend
#spandel
// @Override public void windowStateChanged(WindowEvent e) {
#spanend
#spandel
// if (check.isSelected() && e.getNewState() == Frame.ICONIFIED) {
#spanend
#spandel
// e.getWindow().dispose();
#spanend
#spandel
// }
#spanend
#spandel
// }
#spanend
#spandel
//});
#spanend
#spanadd
// or
#spanend
#spanadd
// frame.addWindowStateListener(new WindowStateListener() {
#spanend
#spanadd
// @Override public void windowStateChanged(WindowEvent e) {
#spanend
#spanadd
// if (check.isSelected() && e.getNewState() == Frame.ICONIFIED) {
#spanend
#spanadd
// e.getWindow().dispose();
#spanend
#spanadd
// }
#spanend
#spanadd
// }
#spanend
#spanadd
// });
#spanend
View in GitHub: Java, Kotlin解説
上記のサンプルでは、WindowListener#windowIconified(...)
でJFrame
が最小化(アイコン化)された場合、Window#dispose()
でネイティブリソースを開放し、タスクバーボタンを非表示にしています。
- タスクバーボタン: 上記の
Windows 7
でのスクリーンショットでは、左下にあるサイズ40x40
のアイコンが表示されているボタン -
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
は終了する - この後
tray.remove(icon);
でTrayIcon
をSystemTray
から削除するとJVM
は終了する