• 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

概要

概要

TrayIconを使用中にJFrameを最小化した場合に、そのアプリケーションのタスクバーボタンを表示するかどうかを切り替えます。

サンプルコード

サンプルコード

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()でネイティブリソースを開放し、タスクバーボタンを非表示にしています。

解説

  • WindowListener#windowIconified(...)JFrameが最小化(アイコン化)された場合、Window#dispose()でネイティブリソースを開放してタスクバーボタンを非表示に変更
  • タスクバーボタン: 上記のWindows 7でのスクリーンショットでは左下にあるサイズ40x40のアイコンが表示されているボタン
  • frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);を設定している場合、Java仮想マシン(JVM)内で最後の表示可能なウィンドウをdispose()すると通常はJVMも終了するが、このサンプルではSystemTrayTrayIconが残っているのでJVMは終了しない
  • この後tray.remove(icon);TrayIconSystemTrayから削除するとJVMは終了する
  • タスクバーボタン: 上記のWindows 7でのスクリーンショットでは、左下にあるサイズ40x40のアイコンが表示されているボタン
  • frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);を設定している場合、Java仮想マシン内で最後の表示可能なウィンドウをdispose()すると、VMが終了するが、このサンプルでは、SystemTrayTrayIconが残っているのでVMは終了しない
  • この後、tray.remove(icon);TrayIconSystemTrayから削除すると、VMは終了する

参考リンク

参考リンク

コメント

コメント