Cli*_*ote 7 java swing trayicon system-tray actionlistener
我正在开发一个简单的Java swing应用程序,它在创建时会在系统托盘中添加一个图标.我要做的是检测用户单击此图标的时间(无论是通过左键单击还是右键单击),没有弹出菜单,我只想在单击图标时恢复应用程序.
这是我正在使用的代码:
SystemTray tray = SystemTray.getSystemTray();
Image icon = toolkit.getImage("icon.png");
ActionListener listener = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("click detected");
}
};
TrayIcon trayIcon = new TrayIcon(icon, "Test Program", null);
trayIcon.addActionListener(listener);
tray.add(trayIcon);
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此程序时会发生什么,单击(左或右)没有任何效果,但是当我双击时,它会在控制台中显示消息"click detected".
我还可以检测到单次点击该怎么办?我需要使用MouseListener吗?(我听说MouseListeners会导致问题,ActionListeners会更好)
ten*_*ica 14
你可以使用MouseListener
,即:
trayIcon.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1) {
}
}
});
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参见如何编写鼠标侦听器.
编辑:ActionListener与MouseListener
存在低级别和语义事件的概念.只要有可能,您应该监听语义事件而不是低级事件,例如侦听动作事件而不是鼠标事件.阅读有关低级事件和语义事件的更多详细信息.
在这种情况下,您只需要从事件中获取更多详细信息,因此需要使用MouseListener.
归档时间: |
|
查看次数: |
4988 次 |
最近记录: |