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

2023-12-02

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

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

但我有一个问题。我的弹出菜单有 2 个菜单项(Exit and 显示登录)但所选菜单项未突出显示,并且单击菜单项后,弹出菜单未关闭。

这是我的代码:

声明一些全局变量

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()); by popupMeunu.show(jButton1, evt.getX(), evt.getY());一切都会变好。

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


不要添加您自己的 MouseListener。

通过你的popupMeunu(这需要是一个java.awt.PopupMenu, not javax.swing.JPopupMenu) 在构造函数中TrayIcon像那样:

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

我从这个复制了这个tutorial效果很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Java中有没有一种方法可以通过名称实例化一个类?

    我正在寻找问题 从字符串名称实例化一个类 https stackoverflow com questions 9854900 instantiate an class from its string name它描述了如何在有名称的情况下实例
  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类

随机推荐

  • NetworkX:分层绘制图形

    我有一个按级别划分的图表 即 f e ids 0 100 are lowest level ids 101 500 are level 2 ids 501 1500 are level 3 and so on 有没有某种方法可以强制图形在分
  • 如何阻止过度访问我的网站的机器人?

    这个机器人不尊重nofollow noindex在robots txt中 我在 robots txt 中有这个 User agent Msnbot Disallow User Agent Msnbot 2 0b Disallow 到目前为止
  • Pyephem 计算当前太阳时

    我正在尝试根据 UTC 小时和经度计算当地太阳时 我已经浏览过ephem包 但无法确定执行此操作的直接方法 关于这个问题的类似问题要么引起固定位置 日出 月亮 日落 的计算 例如使用 PyEphem 计算黎明和日落时间 或接收简化方法的建议
  • pip install pydot 引发语法错误

    我从命令行运行 pip 尝试安装 pydot 因为 Django 的 django extensions 需要它来生成 UML 类图 当我运行命令时pip install pydot 它给了我这个错误 Collecting pydot Us
  • 用鼠标移动图片框

    我正在开发一个适用于 Windows Mobile Compact Framework 2 0 的应用程序 它有一个带有 PictureBox 的 WinForms 我想移动PictureBox的图像 但我不知道该怎么做 所以我选择移动Pi
  • Feed RDLC(本地)报告来自列表(实体框架)的报告

    我给自己找了一个BiningList学生 实体框架创建的类 我只想喂饱我的RDLC从中报告而不是使用DataSet或存储过程 该类包含多个属性 例如 string Name string FamilyName string Mid Date
  • Apache Rewrite:基于HTTP主机的图像目录

    我的软件支持多个域名 所有域名都指向服务器上的同一目录 当然每个域名都有不同的数据库 那么这些域 www example1 com www example2 com www example3 com 都指向 public html 在图像目
  • 如何检查 Reddit 帖子是否仅包含图像而没有其他内容?

    背景 我目前正在使用prawPython 3 7 的库 我的机器人需要做的一件事是检查某些 Reddit 子版块上的最新帖子 看看它们是否包含只是一个图像 没有其他任何东西 鉴于 Reddit 上有不同类型的帖子 仅上传图像的帖子和带有图像
  • 简单注入器身份 UserManager 注册错误

    我正在遵循洋葱架构并使用身份框架 在我的核心项目中 我有 public interface IUserRepository IDisposable Repository methods 在我的 Architecture Repository
  • 访问多维数组中任意深度的键

    如果我有一个包含以下内容的数组 key1 key2 key3 有什么方法可以将其映射到数组 array key1 key2 key3 不使用循环或 eval 数组示例 var key1 gt subkey1 gt finalkey gt v
  • 循环结构的迭代器

    以下代码显示了我目前拥有的内容 它是一个适配器 循环数据结构 main 函数展示了它是如何使用的 这 一切都很好而且很快 但我真的很想让迭代器结束 定义的结构circ 到目前为止涉及的所有方法 某种计数方案 如果使用循环器则计算范围 构建一
  • 使用 Visual Studio sdk 取消修饰函数名称

    要取消修饰 Visual Studio 生成的损坏的 C 名称 您可以使用undname exe 但是 如果您想避免每次需要未装饰时创建完整进程的开销 该怎么办 Visual Studio SDK 中是否有任何等效功能 VS2005 应该支
  • 哪些 Grails 项目文件不应该添加到版本控制中? (Grails 1.3.x)

    这个问题之前已经被问过 但不久前 对 Grails gitignore 的建议 这是针对 grails 1 0 x 的回答 Grails 1 3 x 项目中的哪些文件不应包含在版本控制中 See http grails org Checki
  • 静态类成员上未解析的外部符号

    非常简单地说 我有一个主要由静态公共成员组成的类 因此我可以将类似的函数组合在一起 但仍然需要从其他类 函数调用它们 无论如何 我在类公共作用域中定义了两个静态 unsigned char 变量 当我尝试在同一个类的构造函数中修改这些值时
  • Python 多处理模块的开销

    我正在使用multiprocessingPython 中的模块 并期望启动进程 创建队列以及向队列中放入值或从队列中获取值会产生一些开销 但是 如果子流程有足够的工作要做 我预计开销最终会被消除 运行一个简单的示例 如下所述 我生成的进程的
  • 不阻塞地获取进程输出

    我想获得一个进程的输出 Git exe准确地说 并将其转换为 String 对象 以前有时我的代码被阻止 然后我发现这是因为这个过程 ErrorStream有一些输出 我必须手动捕获它 我对此不感兴趣 我将我的代码更改为 public st
  • rand() 是如何工作的?它有一定的倾向吗?有没有更好用的东西?

    我读到它与时间有关 你也可以从包含 time h 中得到 所以我假设了这么多 但它到底是如何工作的呢 另外 它是否有奇数或偶数或类似数字的倾向 最后 C 标准库或 Foundation 框架中是否有更好的分布 简要地 You use tim
  • 输入可点击的电子邮件和网址

    我有一个用 PHP 处理的表单 用户有时会将他们的电子邮件地址放在表单或 URL 中 在我删除标签的输入后 这些通常会以文本形式出现 最近 我的用户开始要求我在打开显示其输入的页面 现在从数据库中提取 时使他们的 URL 和电子邮件可点击
  • 约束规划:在最短的时间内安排发言人

    我正在尝试通过以下方式调整已经解决的约束规划问题哈坎 凯勒斯特兰德 hakankless 并且需要一些帮助 原来解决的问题 有6个公共演讲者和6个房间 每个发言者应分配到一个房间 没有任何房间是空的 每个发言者只能在一个房间内 解决方案在这
  • 如何在 Java 中使用带有托盘图标的上下文菜单?

    我正在使用 Netbeans 开发 Java 应用程序 我想在系统托盘上创建一个托盘图标 并且当我右键单击托盘图标时将显示一个弹出菜单 我通过拖放创建了一个 jframe 和弹出菜单 但我有一个问题 我的弹出菜单有 2 个菜单项 Exit