首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中使用带有托盘图标的上下文菜单?

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

Stack Overflow用户
提问于 2010-01-04 07:49:24
回答 1查看 3.8K关注 0票数 2

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

我已经创建了一个jframe和弹出式菜单的一个下降和悬垂他们。

但是我有一个problem.My弹出菜单有两个菜单项(ExitShow ),但是选中的菜单项不是高亮的,单击菜单项后,弹出菜单不会关闭。

这是我的代码:

声明一些全局变量

代码语言:javascript
运行
复制
SystemTray systemTray = null;
Image image = Toolkit.getDefaultToolkit().getImage("D:/key-16x16.png");

TrayIcon trayIcon = new TrayIcon(image);

创建和显示系统托盘图标

代码语言:javascript
运行
复制
 systemTray = SystemTray.getSystemTray();
    try
    {
        systemTray.add(trayIcon);
    } catch (AWTException ex)
    {
        Logger.getLogger(mainframe.class.getName()).log(Level.SEVERE, null, ex);
    }

创建MouseAdapter并为托盘图标添加mouseListener

代码语言:javascript
运行
复制
MouseAdapter trayIconMouseAdapter = new MouseAdapter()
    {
      //  @Override
       public void mouseClicked(MouseEvent e) {
                trayIconMouseClicked(e);
       }
    };

   trayIcon.addMouseListener(trayIconMouseAdapter);

鼠标单击托盘图标上的事件。检查它是否是右击并显示弹出菜单。

代码语言:javascript
运行
复制
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());,一切都会好起来的。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-04 08:33:00

不要添加自己的MouseListener。

将您的popupMeunu (需要是java.awt.PopupMenu而不是javax.swing.JPopupMenu)传递到TrayIcon的构造函数中,如下所示:

代码语言:javascript
运行
复制
TrayIcon trayIcon = new TrayIcon(image, "The Tip Text", popup);

我从这个教程复制了这个,它运行得很好。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1998074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档