我在我的应用程序中jframe隐藏在关闭,但当我点击停靠图标,我想要它 to setVisible(true); 如何将动作侦听器添加到停靠栏图标? 我试过了
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机器上的应用程序?
答案 0 :(得分: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上运行时不执行代码。