即使最小化,也会在单击托盘图标时显示JFrame

时间:2015-03-07 21:52:16

标签: java swing

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

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

如果它在另一个窗口后面,它将显示该帧。它将框架放在顶部。但如果我最小化框架,它不会显示窗口。然而,它有点突出显示任务栏标签:

image description

任务栏闪烁很好,但还不够:

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

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

1 个答案:

答案 0 :(得分:2)

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);
    }
 });