gpt4 book ai didi

java - 如何在 Java 中使用带有托盘图标的上下文菜单?

转载 作者:行者123 更新时间:2023-12-04 07:00:08 24 4
gpt4 key购买 nike

我正在使用 Netbeans 开发一个 Java 应用程序,我想在系统托盘上创建一个托盘图标,当我右键单击托盘图标时,将显示一个弹出菜单。

我通过拖放创建了一个 jframe 和弹出菜单。

但是我有一个问题。我的弹出菜单有 2 个菜单项( 退出 显示登录 )但是选定的菜单项没有突出显示,单击菜单项后,弹出菜单是没有关闭。

这是我的代码:

声明一些全局变量

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());一切都会好起来的。

我不知道为什么?请帮我解决我的问题。

最佳答案

不要添加您自己的 MouseListener。

传递您的 popupMeunu (需要是 java.awt.PopupMenu ,而不是 javax.swing.JPopupMenu )在 TrayIcon 的构造函数中像那样:

TrayIcon trayIcon = new TrayIcon(image, "The Tip Text", popup);

我从这里复制了这个 tutorial它工作正常。

关于java - 如何在 Java 中使用带有托盘图标的上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1998074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com