我想让我的应用程序在任务栏上最小化,并在双击trayIcon
时恢复。我也有一个弹出菜单,其中有一个项目可以在点击时恢复窗口。ActionListener和MouseListener冲突
trayIcon = new TrayIcon(image, "Anything", popup);
trayIcon.addActionListener(actionListener);
trayIcon.addMouseListener(mouseListener);
sysTray.add(trayIcon);
这里是actionListener
和mouseListener
的代码:
弹出菜单的Restore
选项工作正常,但是当我在系统托盘我的trayIcon
双击得到Null Pointer Exception
在线if(e.getActionCommand().equals("Restore"))
我该如何消除这种情况,如果可能的话,将两个听众合并为一个?
为什么你甚至需要鼠标监听器或检查动作命令?仅在双击/键盘选择时调用动作侦听器 – Ordous
我正在检查ActionEvent,因为我有多个菜单项,并且需要区分它们,但我省略了其余部分的代码。当我选择菜单中的一个项目时,ActionListener也会被调用。然而,你对MouseListener是正确的,实际上我正在寻找一种将MouseListener实现到ActionListener中的方法。 –
我个人不喜欢为不同的动作使用单个ActionListener的做法。其中一个原因是它会在所有事件中强制使用相同的信息,即使它不适用。这是其中一种情况 - trayIcon根本不会填充“ActionCommand”。我实现的解决方案是使用一个“RestoreListener”,它只是在没有任何检查的情况下恢复该帧,并将该监听器放在还原菜单项和仅托盘图标**上**。 – Ordous