如何将侦听器添加到osx上的java dock图标

如何将侦听器添加到osx上的java dock图标,java,macos,actionlistener,dock,Java,Macos,Actionlistener,Dock,我的应用程序中有jframe关闭时隐藏,但当我单击dock图标时,我需要它 设置为可见(真); 如何将操作侦听器添加到dock图标? 我试过了 但它没有被触发, 此外,它将如何影响windows计算机上的应用程序?您需要使用AppForegroundListener和/或AppPropenedListener。请参见此示例: public static void main(String[] args) { final JFrame frame = new JFrame(); A

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

但它没有被触发,
此外,它将如何影响windows计算机上的应用程序?

您需要使用
AppForegroundListener
和/或
AppPropenedListener
。请参见此示例:

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类的存根,否则会出现编译器错误。看


如果您在Mac上开发,只需确保在Windows上运行时不执行代码。

您需要使用
AppForegroundListener
和/或
AppRedListener
。请参见此示例:

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类的存根,否则会出现编译器错误。看


如果您在Mac上开发,只需确保在Windows上运行时不会执行代码。

只有当我关注另一个应用程序时,它才起作用,而不是监听dock图标click@DimaGoltsman见修改后的答案。您将需要一个
appropenedListener
。它只在我聚焦另一个应用程序时工作,而不监听dock图标click@DimaGoltsman见修改后的答案。您将需要一个
appropenedListener