Swing/HideTaskbarButton のバックアップ(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/HideTaskbarButton へ行く。
- 1 (2016-06-07 (火) 14:47:54)
- 2 (2017-09-15 (金) 16:42:38)
- 3 (2019-03-06 (水) 17:40:32)
- 4 (2020-12-18 (金) 16:05:03)
- 5 (2023-06-01 (木) 14:50:01)
- 6 (2025-01-03 (金) 08:57:02)
- 7 (2025-01-03 (金) 09:01:23)
- 8 (2025-01-03 (金) 09:02:38)
- 9 (2025-01-03 (金) 09:03:21)
- 10 (2025-01-03 (金) 09:04:02)
- 11 (2025-06-19 (木) 12:41:37)
- 12 (2025-06-19 (木) 12:43:47)
- 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();
}
}
});
//or
//frame.addWindowStateListener(new WindowStateListener() {
// @Override public void windowStateChanged(WindowEvent e) {
// if (check.isSelected() && e.getNewState() == Frame.ICONIFIED) {
// e.getWindow().dispose();
// }
// }
//});
View in GitHub: Java, Kotlin解説
上記のサンプルでは、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は終了する