我有一个GUI Java应用程序。该应用程序最小化到系统托盘。单击托盘图标时,我放置了frame.requestFocusInWindow(),以便还原的JFrame可以引起用户的注意。

代码如下。

 trayicon.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            try {
                if (e.getButton()==MouseEvent.BUTTON1) frame.setVisible(true);
                frame.requestFocusInWindow();
            } catch (Exception ex) {
                Logger.getLogger(TrayControl.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
});


如果我在NetBeans IDE中执行该应用程序,则此方法非常有效,但是当我构建.jar文件并执行它时,似乎无法使用.requestFocusInWindow(),因为该应用程序窗口无法吸引用户的注意力,并在其他窗口之后被还原。我打开的窗户。那么这里发生了什么?

最佳答案

问题解决了。我在.setExtendedState()中使用了JFrameMouseListener齿形,如下所示:

trayicon.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
        try {
            frame.setExtendedState(JFrame.NORMAL);
            frame.setVisible(true);
        } catch (Exception ex) {
            Logger.getLogger(TrayControl.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
});

关于java - .requestFocusInWindow()在构建jar时不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37094712/

10-09 00:23