繁体   English   中英

单击托盘图标时显示JFrame(即使已最小化)

[英]Show JFrame when tray icon was clicked even if minimized

单击任务栏图标时,我需要恢复一个隐藏的窗口。 我实际上已经找到了部分解决方案:

tray_icon.addMouseListener(new MouseListener() {
  @Override
  public void mouseClicked( MouseEvent e ) {
    //Gui.this refers to my frame
    Gui.this.setVisible(true);
  }
});

如果框架在另一个窗口后面,它将显示该框架。 它将框架放在顶部。 但是,如果我最小化框架,则不会显示窗口。 有趣的是,它稍微突出了任务栏选项卡:

图片描述

任务栏闪烁是不错的,但还不够:

  • 我想显示JFrame而不管它的隐藏方式

请注意,我计划允许“最小化到托盘”功能。 这意味着我什至会完全隐藏窗口(如果Java允许的话)。 仍然必须能够显示它。

除了setVisible ,还需要设置其他内容:

Gui.this.setState(Frame.NORMAL);

最小化时,框架的状态为Frame.ICONIFIED。

这是还原隐藏框架的完整回调:

   tray_icon.addMouseListener(new MouseListener() {
     @Override
     public void mouseClicked( MouseEvent e ) {
       Gui.this.setVisible(true);
       Gui.this.setState (Frame.NORMAL);
     }
   }

这就是我用来隐藏窗口和任务栏面板(最小化到托盘)的方法:

 this.addWindowListener(new WindowAdapter()
 {
    @Override
    public void windowIconified(WindowEvent event) {
      //Hides it from screen
      Gui.this.setState(Frame.ICONIFIED);
      //Hides it from taskbar and screen
      Gui.this.setVisible(false);
    }
 });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM