如何将侦听器添加到 osx 上的 java 停靠图标
Posted
技术标签:
【中文标题】如何将侦听器添加到 osx 上的 java 停靠图标【英文标题】:how to add listener to java dock icon on osx 【发布时间】: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机器上的应用程序?
【问题讨论】:
【参考方案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
。以上是关于如何将侦听器添加到 osx 上的 java 停靠图标的主要内容,如果未能解决你的问题,请参考以下文章
如何将 jnlp 与 OSX 停靠图标捆绑在一起;这在 java 首选项中似乎不再可能