我有一个 TrayIcon,它偶尔会通过 displayMessage() 显示弹出/气球消息。 TrayIcon 本身有一个 ActionListener 可以正常工作。根据文档,至少在某些平台(例如 Win 8)上,单击消息气泡本身会触发图标的监听器事件。
到目前为止一切顺利,但我想为
- 用户单击系统托盘中的图标本身
- 用户点击消息气泡(在本例中,不执行任何操作)
有没有一种优雅的方式来做到这一点?
我认为 ActionEvent 可能有一个属性传递给 ActionListener.actionPerformed() ,它可以区分两个点击来源,但找不到一个。
有什么想法吗?如果有帮助的话,该应用程序只能在 Windows 上运行。
最佳答案
每当我使用休息服务推送消息时,我有一种方法可以在系统托盘图标上的气球中显示消息。您可以将操作监听器添加到显示的消息中,您可以使用它在 actionperfomed 方法中执行任何操作。
public void displayMessage(String psTitle, String psMessage, final MessageType poType){
moTrayIcon.displayMessage(psTitle, psMessage, poType);
moTrayIcon.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
Desktop dst = Desktop.getDesktop();
String location = "D:\\dev";
dst.open(new File(location));
//location = "D:\\"; // again setting root location
} catch (Exception ex) {
LOGGER.error("------- error with folder opening double click "
+ ex.getMessage());
}
}
});
}
关于Java Swing TrayIcon 气球消息 - 实现与主图标不同的 Action 监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30072742/