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)
- 追加された行はこの色です。
- 削除された行はこの色です。
---
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()`でネイティブリソースを開放し、タスクバーボタンを非表示にしています。
- タスクバーボタン: 上記の`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