我正在使用Netbeans开发一个Java应用程序,我希望在系统托盘上创建一个托盘图标,当我右键单击托盘图标时,会显示一个弹出菜单。
我已经创建了一个jframe和弹出式菜单的一个下降和悬垂他们。
但是我有一个problem.My弹出菜单有两个菜单项(Exit和Show ),但是选中的菜单项不是高亮的,单击菜单项后,弹出菜单不会关闭。
这是我的代码:
声明一些全局变量
SystemTray systemTray = null;
Image image = Toolkit.getDefaultToolkit().getImage("D:/key-16x16.png");
TrayIcon trayIcon = new TrayIcon(image);
创建和显示系统托盘图标
systemTray = SystemTray.getSystemTray();
try
{
systemTray.add(trayIcon);
} catch (AWTException ex)
{
Logger.getLogger(mainframe.class.getName()).log(Level.SEVERE, null, ex);
}
创建MouseAdapter并为托盘图标添加mouseListener
MouseAdapter trayIconMouseAdapter = new MouseAdapter()
{
// @Override
public void mouseClicked(MouseEvent e) {
trayIconMouseClicked(e);
}
};
trayIcon.addMouseListener(trayIconMouseAdapter);
鼠标单击托盘图标上的事件。检查它是否是右击并显示弹出菜单。
private void trayIconMouseClicked(java.awt.event.MouseEvent evt) {
if(SwingUtilities.isRightMouseButton(evt))
{
popupMeunu.show(evt.getComponent(), evt.getX(), evt.getY());
}
}
但是,如果我将一个按钮悬垂到jframe,并将popupMeunu.show(evt.getComponent(), evt.getX(), evt.getY());
替换为popupMeunu.show(jButton1, evt.getX(), evt.getY());
,一切都会好起来的。
我不知道为什么?请帮我解决我的问题。
发布于 2010-01-04 08:33:00
不要添加自己的MouseListener。
将您的popupMeunu
(需要是java.awt.PopupMenu
而不是javax.swing.JPopupMenu
)传递到TrayIcon
的构造函数中,如下所示:
TrayIcon trayIcon = new TrayIcon(image, "The Tip Text", popup);
我从这个教程复制了这个,它运行得很好。
https://stackoverflow.com/questions/1998074
复制相似问题