Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用java左键单击打开任务托盘图标上的弹出式菜单

使用java左键单击打开任务托盘图标上的弹出式菜单
EN

Stack Overflow用户
提问于 2012-07-11 07:54:28
回答 5查看 16.9K关注 0票数 13

我在java的任务托盘图标上工作,我喜欢打开一个弹出菜单使用左键单击相同的弹出菜单,因为我打开右键单击,请帮助我快速响应。

先谢谢你...

这是工作的代码右击需要显示相同的弹出在左键点击...不要忘记放置任何名称为"titleImg.jpg“的图片@ "src/img”文件夹。

运行这个..。这是一个工作示例,但我必须使用左击显示相同的弹出窗口

我已经检查过鼠标监听器了,它监听鼠标左键点击托盘图标,但是怎么用那个弹出式菜单呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    package com.abc.dao;

import java.awt.AWTException;
import java.awt.CheckboxMenuItem;
import java.awt.Menu;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;

public class MyTaskTray {
    public static void main(String arg[]){

        //Check the SystemTray is supported
        if (!SystemTray.isSupported()) {
            System.out.println("SystemTray is not supported");
            return;
        }
        final PopupMenu popup = new PopupMenu();
        final TrayIcon trayIcon =
                new TrayIcon(Toolkit.getDefaultToolkit().getImage(new java.io.File("").getAbsolutePath()+"/bin/img/titleImg.jpg"), "Library Drop");
        final SystemTray tray = SystemTray.getSystemTray();

        // Create a pop-up menu components
        MenuItem aboutItem = new MenuItem("About");
        CheckboxMenuItem cb1 = new CheckboxMenuItem("Set auto size");
        CheckboxMenuItem cb2 = new CheckboxMenuItem("Set tooltip");
        Menu displayMenu = new Menu("Display");
        MenuItem errorItem = new MenuItem("Error");
        MenuItem warningItem = new MenuItem("Warning");
        MenuItem infoItem = new MenuItem("Info");
        MenuItem noneItem = new MenuItem("None");
        MenuItem exitItem = new MenuItem("Exit");

        //Add components to pop-up menu
        popup.add(aboutItem);
        popup.addSeparator();
        popup.add(cb1);
        popup.add(cb2);
        popup.addSeparator();
        popup.add(displayMenu);
        displayMenu.add(errorItem);
        displayMenu.add(warningItem);
        displayMenu.add(infoItem);
        displayMenu.add(noneItem);
        popup.add(exitItem);

        trayIcon.setPopupMenu(popup);

        try {
            tray.add(trayIcon);
        } catch (AWTException e) {
            System.out.println("TrayIcon could not be added.");
        }

    }
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-12 12:15:03

您实际上缺少的是一个用于显示PopupMenu的父组件。要做到这一点,一种方法是使用一个“不可见”的框架(实际上它是可见的,但没有边界,没有装饰,所以你看不到它):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.awt.AWTException;
import java.awt.CheckboxMenuItem;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.net.MalformedURLException;
import java.net.URL;

public class MyTaskTray {
    public static void main(String arg[]) throws MalformedURLException {
        final Frame frame = new Frame("");
        frame.setUndecorated(true);
        // Check the SystemTray is supported
        if (!SystemTray.isSupported()) {
            System.out.println("SystemTray is not supported");
            return;
        }
        final TrayIcon trayIcon = new TrayIcon(Toolkit.getDefaultToolkit().getImage(
                new URL("http://home.comcast.net/~supportcd/Icons/Java_Required.jpg")), "Library Drop");
        final SystemTray tray = SystemTray.getSystemTray();

        // Create a pop-up menu components
        final PopupMenu popup = createPopupMenu();
        trayIcon.setPopupMenu(popup);
        trayIcon.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (e.getButton() == MouseEvent.BUTTON1) {
                    frame.add(popup);
                    popup.show(frame, e.getXOnScreen(), e.getYOnScreen());
                }
            }
        });
        try {
            frame.setResizable(false);
            frame.setVisible(true);
            tray.add(trayIcon);
        } catch (AWTException e) {
            System.out.println("TrayIcon could not be added.");
        }

    }

    protected static PopupMenu createPopupMenu() {
        final PopupMenu popup = new PopupMenu();
        MenuItem aboutItem = new MenuItem("About");
        CheckboxMenuItem cb1 = new CheckboxMenuItem("Set auto size");
        CheckboxMenuItem cb2 = new CheckboxMenuItem("Set tooltip");
        Menu displayMenu = new Menu("Display");
        MenuItem errorItem = new MenuItem("Error");
        MenuItem warningItem = new MenuItem("Warning");
        MenuItem infoItem = new MenuItem("Info");
        MenuItem noneItem = new MenuItem("None");
        MenuItem exitItem = new MenuItem("Exit");
        // Add components to pop-up menu
        popup.add(aboutItem);
        popup.addSeparator();
        popup.add(cb1);
        popup.add(cb2);
        popup.addSeparator();
        popup.add(displayMenu);
        displayMenu.add(errorItem);
        displayMenu.add(warningItem);
        displayMenu.add(infoItem);
        displayMenu.add(noneItem);
        popup.add(exitItem);
        return popup;
    }
}

从Java 1.7开始,您可以添加以下行以从任务栏中删除应用程序栏:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
frame.setType(Type.UTILITY);
票数 15
EN

Stack Overflow用户

发布于 2012-07-11 08:07:18

你可以将ActionListener添加到TrayIcon中,鼠标double_click可以显示JOptionPane

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
trayIcon.addActionListener(new ActionListener() {

   @Override
   public void actionPerformed(ActionEvent e) {
       JOptionPane.showMessageDialog(null, "This dialog box is run from System Tray");
   }
});
票数 4
EN

Stack Overflow用户

发布于 2012-07-11 08:06:51

我认为您正在寻找一个MouseListener,您将添加到您的TrayIcon,并将激活时,在鼠标上的一个按钮被点击,移动等。要让它操作只为左键点击,看看ButtonMasks on MouseEvent (BUTTON1)是为鼠标左键点击。

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

https://stackoverflow.com/questions/11428042

复制
相关文章
MATLAB GUI设计之弹出式菜单的使用
弹出式菜单在MATLAB GUI设计中常常出现。比如串口助手、绘制图形等经常见到弹出式菜单如下图所示:
全栈程序员站长
2022/06/27
1.7K0
MATLAB GUI设计之弹出式菜单的使用
【说站】python TKinter弹出式菜单的使用
以上就是python TKinter弹出式菜单的使用,希望对大家有所帮助。更多Python学习指路:python基础教程
很酷的站长
2022/11/24
7770
【说站】python TKinter弹出式菜单的使用
Android-使用PopupMenu创建弹出式菜单
PopupMenu 代表弹出式菜单,它会在指定组件上,默认情况下,PopupMenu会显示该组件,PopupMenu可增加多个菜单项。
圆号本昊
2021/09/24
9360
Android-使用PopupMenu创建弹出式菜单
MFC子窗口任务栏显示图标和主窗口最小化在系统托盘中显示图标
MFC子窗口任务栏显示图标很简单, 只需要在子窗口的初期化函数OnInitDialog()中添加ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW); 主窗口在系统托盘中显示图标以及恢复窗口是参考某位大神的代码 (一)  原理     1、最小化的原理:首先要将窗口隐藏,然后在右下角绘制图标。     2、恢复的原理:将窗口显示,再将托盘中的图片删除。 (二)程序实现     1、自定义消息WM_SHOWTASK:  #define WM_SHOWTASK (WM
Sindsun
2018/04/28
3.2K0
便携式钻孔测斜仪数据采集仪如何使用
如下图示所示,测斜仪操作系统桌面类与计算机十分类似,桌面由主界面和底部的任务栏构成。快捷图标 任务栏 点击,快速点击一次即为左键单击,快速(2~3 秒)。
河北稳控科技
2023/04/03
5390
便携式钻孔测斜仪数据采集仪如何使用
利用c#制作托盘程序,并禁止多个应用实例运行
托盘程序的制作: 1.把NotifyIcon控件拉一个到窗体上,并设置NotifyIcon的Icon(很重要!否则运行后看不到效果) 2.窗体关闭时,将程序最小化到系统托盘上 private void Form1_FormClosing(object sender, FormClosingEventArgs e) {     //MessageBox.Show("程序将最小化到系统托盘区");     e.Cancel = true; // 取消关闭窗体      this.Hide();
菩提树下的杨过
2018/01/22
1.3K0
Win7系统中必需记住的14个常用快捷键
在使用电脑时,多多少少地都会用到一些快捷键,尤其是在玩游戏,或使用一些软件时。快捷键不仅方便,如果用的好,甚至可以大大提升我们的工作效率。而且,快捷键不仅可以在软件中使用,在Win7系统中其实也有很多实用的快捷键组合。
跟着阿笨一起玩NET
2018/09/18
1.6K0
Win7系统中必需记住的14个常用快捷键
Windows 托盘区域显示图标
这个结构体包含了向通知区域(底部任务栏右下角区域,下面都称为托盘)显示的信息。需要使用函数Shell_NotifyIcon。
用户3148308
2018/09/13
1.9K0
网课、在线会议等学术交流必备神器之ClickShow
咱在GitHub上闲逛偶遇一款名叫ClickShow的小工具,开发者是cuiliang,采用C#语言开发。看着ReadMe的描述咱就觉得这款工具非常适合当下正流行的各类网课和在线会议,不敢独享,故在此分析给大家。
巴山学长
2023/03/15
1.1K0
网课、在线会议等学术交流必备神器之ClickShow
ubuntu快捷键设置大全 [转]
转自:http://xiongyongyuan1234.blog.163.com/blog/static/5566116820103845725657/
forrestlin
2022/04/02
2K0
self.setToolTip('小工具') # 鼠标移动到托盘图标上的代码分享
number_sprites_group = getNumberSpritesGroup(game24_gen.numbers_now)
好派笔记
2022/06/07
3570
原 Intellij IDEA 2017
这个章节让你熟悉Intellij IDEA的用户界面,以便帮助你更好的在工作环境中使用。 当你第一次运行Intellij IDEA或者没有打开项目时,Intellij IDEA显示欢迎页面,以便能够快
石奈子
2018/06/13
2.8K0
给 Mac 添加右键菜单「使用 VSCode 打开」
最终的实现效果是在文件 / 文件夹上右击时,会出现菜单项「用 VSCode 打开」,点击后会启动 Visual Studio Code 打开对应的文件 / 文件夹。
mzlogin
2020/11/03
1.1K0
给 Mac 添加右键菜单「使用 VSCode 打开」
给 Mac 添加右键菜单「使用 VSCode 打开」
最终的实现效果是在文件 / 文件夹上右击时,会出现菜单项「用 VSCode 打开」,点击后会启动 Visual Studio Code 打开对应的文件 / 文件夹。
零式的天空
2022/03/28
1.1K0
计划任务定时关机不执行_IT运维管理制度
《定时执行专家》是一款制作精良、功能强大、简单易用的专业级定时任务执行软件。软件具有 18 种任务类型、11 种任务触发方式(包含 Cron方式),能够达到毫秒级的执行精度,并且全面支持Cron表达式。软件采用多线程方式检测任务触发和任务执行,可以同时支持数十个任务的毫秒级触发。软件无需安装,无时间限制,欢迎下载使用。
全栈程序员站长
2022/09/30
1.5K0
计划任务定时关机不执行_IT运维管理制度
java开发_系统托盘
========================================================================
Hongten
2018/09/13
7400
java开发_系统托盘
15个增加效率的常用Win系统快捷键
15个一定要会的常用Win系统快捷键,快捷键带给我们的不只是快速,还能感受到机器带来的快感。
阳光之海
2018/10/31
6230
Fireworks操作技巧
选中切片——单击鼠标右键——选择导出所选切片——设置图片的名称和图片保存的位置单击保存按钮后可以将图片保存在本地
用户3880999
2023/04/13
7860
点击加载更多

相似问题

使用左键单击NWJS ()打开托盘菜单

21

左键单击托盘图标上下文菜单后,发送了什么消息?(windows api )

11

Java,swt,如何区分右键单击和弹出式菜单上的左键。

11

Actionscript左键单击菜单

13

菜单栏在左键单击时无法打开

111
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文