右键弹出菜单+最小化按钮到系统托盘+提示信息

2023-10-29 20:18

本文主要是介绍右键弹出菜单+最小化按钮到系统托盘+提示信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/**
 * 右键弹出菜单+系统托盘+提示信息
 */
package test1;


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class JFrameHide extends JFrame implements Runnable,MouseListener{
private int xx;//窗口左上角x坐标
private int yy;//窗口左上角y坐标
private int cdheight=300;//窗口的高
private int cdwidth=400;//窗口的宽
private int hidepeer=10;//窗口隐藏的速度,单位为像素
//Thread hidethread;//窗口的隐藏或显示线程
PopupMenu cdpop1,cdpop2;//弹出菜单
MenuItem cdmenu1,cdmenu2,cdmenu3,cdmenu4,cdmenu5;//弹出菜单项
SystemTray cdtray=null;//托盘实例
TrayIcon cdicon=null;//托盘图标
ImageIcon cdimage;//图片
 public JFrameHide(){
 super("类似于迅雷的浮动小小提示窗口");
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 setSize(cdwidth,cdheight);
 this.setBackground(Color.black);
 cdimage=new ImageIcon("images/icon_share_buddy.png");
   
 cdpop1=new PopupMenu();
 cdmenu1=new MenuItem("关于");
 cdmenu2=new MenuItem("退出");
 cdmenu3=new MenuItem("最小化");
 cdmenu4=new MenuItem("最小化并放到托盘");
 cdmenu5=new MenuItem("还原");
 //弹出菜单
 cdpop2=new PopupMenu();
 //TrayIcon 对象表示可以添加到系统托盘的托盘图标
 cdicon=new TrayIcon(cdimage.getImage(),"LCD的窗口隐藏测试",cdpop2);
 
 


 cdmenu1.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
   JOptionPane.showMessageDialog(null,"我用来测试隐藏功能的");
  }
 });
 cdmenu2.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
   System.exit(0);//退出系统
  }
 });
 cdmenu3.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
   setState(Frame.ICONIFIED);//设置状态为最小化
  }
 });
 cdmenu4.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
  //最小化并添加到系统托盘
if(SystemTray.isSupported()){// 返回当前平台是否支持系统托盘
   //获取表示桌面托盘区的 SystemTray 实例
    cdtray=SystemTray.getSystemTray();
    try{
     cdtray.add(cdicon);//添加托盘小图标
     dispose();//隐藏当前窗体
    }
    catch(AWTException ex){
     JOptionPane.showMessageDialog(null,"当前系统不支持系统托盘实例!出错信息:"+ex.toString());
    }
    cdicon.addMouseListener(new MouseListener(){
     public void mouseClicked(MouseEvent e){
     //判断用户是否点击了鼠标右键
      if((e.getModifiers()&InputEvent.BUTTON3_MASK)!=0){
       cdpop2.add(cdmenu1);
       cdpop2.add(cdmenu5);
       cdpop2.add(cdmenu2);
       cdpop2.show(null,e.getX(),e.getY());
      }
     }
     public void mouseExited(MouseEvent e){}
     public void mousePressed(MouseEvent e){}
     public void mouseEntered(MouseEvent e){}
     public void mouseReleased(MouseEvent e){}
    });
    dispose();
   }
  }
 });
 cdmenu5.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
   setVisible(true);
   cdtray.remove(cdicon);//从 SystemTray 中移除指定的 TrayIcon。
  }
 });
 cdpop1.add(cdmenu3);
 cdpop1.add(cdmenu4);
 cdpop1.add(cdmenu1);
 cdpop1.add(cdmenu2);  
 add(cdpop1);
 
 
 addMouseListener(this);
 //设置窗口相对于指定组件的位置
 setLocationRelativeTo(null);
 setUndecorated(true);
 setVisible(true);


  
}
public void mouseExited(MouseEvent e){}
public void mouseReleased(MouseEvent e){
 setVisible(false);
 setLocation((int)(e.getX()-xx+getLocation().getX()),(int)(e.getY()-yy+getLocation().getY()));
 setVisible(true);
}
public void mouseEntered(MouseEvent e){}
public void mouseClicked(MouseEvent e){
 
}
public void mousePressed(MouseEvent e){
 xx=e.getX();
 yy=e.getY();
 if((e.getModifiers()&InputEvent.BUTTON3_MASK)!=0){
  cdpop1.show(this,e.getX(),e.getY()); //在指定位置显示右键弹出菜单
 }
}
 
public static void main(String []args){
new JFrameHide();
}
public void run(){
 //暂时还没有实现在窗口旁边的时候自动隐藏的功能
}
}

这篇关于右键弹出菜单+最小化按钮到系统托盘+提示信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/303112

相关文章

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh

PNG透明背景按钮的实现(MFC)

问题描述: 当前要在对话框上添加一个以两个PNG图片作为背景的按钮,PNG图的背景是透明的,按钮也要做出相同的透明效果。并且鼠标不在按钮上时,按钮显示"bg1.png";鼠标移动到按钮上时,按钮显示"bg2.png" 开发环境为VS2010。 解决办法: 使用GDI+库装载PNG图片,并使用MFC Button Control和CMFCButton类结合,调用CMFCButton

【C++二分查找】2439. 最小化数组中的最大值

本文涉及的基础知识点 C++二分查找 LeetCode2439. 最小化数组中的最大值 给你一个下标从 0 开始的数组 nums ,它含有 n 个非负整数。 每一步操作中,你需要: 选择一个满足 1 <= i < n 的整数 i ,且 nums[i] > 0 。 将 nums[i] 减 1 。 将 nums[i - 1] 加 1 。 你可以对数组执行 任意 次上述操作,请你返回可以得到的 n

龙芯+FreeRTOS+LVGL实战笔记(新)——05部署主按钮

本专栏是笔者另一个专栏《龙芯+RT-Thread+LVGL实战笔记》的姊妹篇,主要的区别在于实时操作系统的不同,章节的安排和任务的推进保持一致,并对源码做了改进和优化,各位可以先到本人主页下去浏览另一专栏的博客列表(目前已撰写36篇,图1所示),再决定是否订阅。此外,也可以前往本人在B站的视频合集(图2所示)观看所有演示视频,合集首个视频链接为: 借助RT-Thread和LVGL

致远个性化之--发起流程页面,去掉【查看流程】按钮

需求 近期在做的项目中,遇到一个需求,想把发起流程页面中的【查看流程】按钮去掉,只让员工预测流程,知道自己的事项流程走向,不让看全局流程图。包含PC端和移动端,以及微协同端。 如下图效果示例: 实现 此需求,只能通过修改页面代码实现。在此不分析实现过程,现把具体实现方式呈现如下,各位如有需求可参照设置。适用版本V9.0,其他版本未进行测试,估计不会有大的差别! PC端 找到文件

如何在Excel中创建一个VBA宏,并设置一个按钮来执行这个宏

下面是一个详细的步骤指南 步骤1:创建VBA宏 1. 打开Excel并按 `Alt + F11` 打开VBA编辑器。 2. 在VBA编辑器中,选择 `Insert` > `Module` 来插入一个新的模块。 3. 将以下代码粘贴到模块中: ```vba Sub CreateNewSheet()' 声明一个工作表对象Dim newSheet As Worksheet' 添加一个新的工作表S

如何在Qt的widget上右键显示菜单

如何在Qt的widget上右键显示菜单 今天早上一来,我老大叫我在widget上点击右键加上一个菜单,并相应其响应的功能,因为我成刚接触Qt,所以看了下QtGUI编程这本书,做出来,记录下来,说不定哪天还用得上啊! 废话不多说,直接上代码: 方法一: m_text = QTextCodec::codecForLocale(); ui->tableWidget->addAction(ne

Vue3实现点击按钮下载头像功能

要实现的效果 点击头像右上角弹出选项,点击保存图片可以把图片下载保存到本地 实现方式关键代码 1.第一种,直接创建a标签给头像地址。进行下载 // 创建一个隐藏的 <a> 标签const link = document.createElement("a");link.href = headPic; // 设置为图片的 URLlink.download = "avatar.jpg"; //