【问题标题】:how to add listener to java dock icon on osx如何将侦听器添加到 osx 上的 java 停靠图标
【发布时间】:2013-05-06 14:42:39
【问题描述】:

我的应用程序中有 jframe 关闭时隐藏,但是当我单击停靠图标时,我想要它 设置可见(真); 如何将动作侦听器添加到停靠图标? 我试过了

Image im = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("SLogo.png"));
final TrayIcon tri = new TrayIcon(im);
tri.addActionListener(this);

@Override
public void actionPerformed(ActionEvent ae) {
     this.setVisible(true);
     System.out.print("ok");

}

但它没有被触发, 还有,它将如何影响windows机器上的应用程序?

【问题讨论】:

    标签: java macos actionlistener dock


    【解决方案1】:

    您需要使用AppForegroundListener 和/或AppReOpenedListener。看这个例子:

    public static void main(String[] args)
    {
        final JFrame frame = new JFrame();
    
        Application app = Application.getApplication();
        app.addAppEventListener(new AppForegroundListener() {
    
            @Override
            public void appMovedToBackground(AppForegroundEvent arg0)
            {
                System.out.println("appMovedToBackground");
            }
    
            @Override
            public void appRaisedToForeground(AppForegroundEvent arg0)
            {
                System.out.println("appRaisedToForeground");
                frame.setVisible(true);
            }
    
        });
    
        app.addAppEventListener(new AppReOpenedListener() {
            @Override
            public void appReOpened(AppReOpenedEvent arg0)
            {
                System.out.println("app reoponed");
                frame.setVisible(true);
            }
        });
    
        frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        frame.setSize(200, 200);
        frame.setVisible(true);
    }
    

    如果您在 Windows 上进行开发,则需要包含 Mac/Java 类的存根,否则会出现编译器错误。见here

    如果你在 Mac 上开发,只要确保代码在 Windows 上运行时没有被执行。

    【讨论】:

    • 它只有在我关注另一个应用程序时才有效,它不听停靠图标点击
    • @DimaGoltsman 查看修订后的答案。你会想要一个AppReOpenedListener
    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2018-06-05
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多