java程序加到系充托盘的方法

  1 package swingtest;
  2
  3
  4 import javax.swing.*;
  5 import java.awt.*;
  6 import java.awt.event.ActionEvent;
  7 import java.awt.event.ActionListener;
  8 import java.awt.event.MouseAdapter;
  9 import java.awt.event.MouseEvent;
 10 import java.io.UnsupportedEncodingException;
 11 import java.net.URL;
 12 import java.util.Random;
 13
 14
 15 public class MainFrame extends JFrame implements ActionListener {
 16
 17     private static final long serialVersionUID = -7078030311369039390L;
 18     private JMenu menu;
 19     private JMenuBar jmenuBar;
 20     private String[] jmItemName = {"置于托盘", "系统退出"};
 21
 22     private MainFrame() throws UnsupportedEncodingException {
 23         super("电话薄");
 24         init();
 25         this.setSize(500, 400);
 26         this.setJMenuBar(jmenuBar);
 27         this.setLocationRelativeTo(null);
 28
 29         JButton jbutton = new JButton("test");
 30         add(jbutton);
 31
 32
 33         systemTray(jbutton);    //系统托盘
 34     }
 35
 36     /**
 37      * 初始化界面
 38      */
 39     private void init() {
 40         menu = new JMenu("系统窗体");
 41         for (String s : jmItemName) {
 42             JMenuItem menuItem = new JMenuItem(s);
 43             menuItem.addActionListener(this);
 44             menu.add(menuItem);
 45         }
 46         this.jmenuBar = new JMenuBar();
 47         this.jmenuBar.add(menu);
 48     }
 49
 50     @Override
 51     public void actionPerformed(ActionEvent e) {
 52         String actions = e.getActionCommand();
 53         if ("置于托盘".equals(actions)) {
 54             this.setVisible(false);
 55         }
 56         if ("系统退出".equals(actions)) {
 57             System.exit(0);
 58         }
 59
 60     }
 61
 62     /**
 63      * 系统托盘图标处理.
 64      *
 65      * @param jbutton
 66      */
 67     private void systemTray(JButton jbutton) throws UnsupportedEncodingException {
 68         if (SystemTray.isSupported()) {    //判断系统是否支持托盘功能.
 69 //            URL resource = this.getClass().getResource("car.jpg");    //获得图片路径
 70
 71             URL resource = getClass().getClassLoader().getResource("car.jpg");
 72 //            File targetFile = new File("files/8k.wav");
 73
 74 //            ClassPathResource classPathResource = new ClassPathResource("static/something.txt");
 75 //
 76 //            InputStream inputStream = classPathResource.getInputStream();
 77             ImageIcon icon = new ImageIcon(resource); //创建图片对象
 78             JPopupMenu popupMenu = new JPopupMenu(); //创建弹出菜单对象
 79             JMenuItem itemExit = new JMenuItem("退出系统");    //创建弹出菜单中的退出项
 80             JMenuItem itemShow = new JMenuItem("显示窗体"); //创建弹出菜单中的显示主窗体项.
 81
 82
 83             popupMenu.add(itemExit);
 84             popupMenu.add(itemShow);
 85             TrayIcon trayIcon = new TrayIcon(icon.getImage(), "电话薄系统");
 86             SystemTray sysTray = SystemTray.getSystemTray();
 87
 88             try {
 89                 sysTray.add(trayIcon);
 90             } catch (AWTException ignored) {
 91             }
 92             trayIcon.addMouseListener(new MouseAdapter() {
 93                 @Override
 94                 public void mouseReleased(MouseEvent e) {
 95                     if (e.isPopupTrigger()) {
 96                         popupMenu.setLocation(e.getX(), e.getY());
 97                         popupMenu.setInvoker(popupMenu);
 98                         popupMenu.setVisible(true);
 99                     }
100                 }
101             });
102             //给窗体最小化添加事件监听.
103             itemShow.addActionListener(e -> {
104                 setVisible(true);
105
106             });
107             //给退出像添加事件监听
108             itemExit.addActionListener(e -> {
109 //                System.exit(0);
110                 sysTray.remove(trayIcon);
111                 dispose();
112             });
113             int count = 0;
114             jbutton.addActionListener(e -> {
115                 TrayIcon trayIcon4 = new TrayIcon(icon.getImage(), "电话薄系统");
116                 try {
117                     sysTray.add(trayIcon4);
118                 } catch (AWTException ex) {
119                     ex.printStackTrace();
120                 }
121             });
122
123         }
124     }
125
126     /**
127      * 主方法
128      *
129      * @param args sdf
130      */
131     public static void main(String[] args) throws UnsupportedEncodingException {
132         new MainFrame().setVisible(true);
133     }
134 }

原文地址:https://www.cnblogs.com/yangxiaobo-blog/p/11664355.html

时间: 2024-08-14 10:41:58

java程序加到系充托盘的方法的相关文章

JAVA程序 写供别人调用的接口方法的时候 异常应该怎么处理?

要看出现的是哪种异常了.如果是使用某些定义好的函数,并且函数本身会产生异常处理方法一般两种:1.自己用try{}catch(){}语句捕获异常并处理.2.在定义接口的后面写上throw Exception.把异常抛出让使用接口的人处理异常.两种方法都可以.但如果是RuntimeException异常,那就是自己程序某些地方写错了,那你就必须找到并修改程序.JAVA程序 写供别人调用的接口方法的时候 异常应该怎么处理?,布布扣,bubuko.com

java 程序语言中的LinkedList 集合基本方法演示

java 程序语言中的LinkedList 集合基本方法演示 import java.util.Iterator; import java.util.LinkedList; public class LinkedListDemos { public static void main(String[] args) { // 新建一个容器 LinkedList link = new LinkedList(); link.addFirst("abc1"); link.addFirst(&qu

android native HAL程序 java程序 linux kernel打印调用栈的方法

android native HAL程序 java程序 linux kernel打印调用栈的方法 关于android java打出调用栈的方法 1)方法一:refs:frameworks/base/services/java/com/android/server/ActivityManagerService.javastartProcessLocked(){Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "amProcessStart&quo

java程序导致cpu利用率100%的解决方法

1)先用top找出哪个线程占着cpu #top 查看cpu 100% 的进程号,如进程号为16459 #top -H -p 16459 然后再看是哪个pid 比较高   找到cpu为100%的PID PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 16539 root      25   0 1673m 525m  10m R 98.9 13.3   6:36.83 java 16462 root      1

Java程序,取随机数的两种实现方法

1.随机数的第一种程序(取0-9的整型随机数) public class random_1 { public static void main(String[] args) { Random r=new Random(); int number=r.nextInt(10); System.out.println("随机数是"+number); } } 2.随机数的第二种程序(取0-7的整型随机数) public class random_1 { public static void m

Java 程序优化:字符串操作、基本运算方法等优化策略(二)

五.数据定义.运算逻辑优化 多使用局部变量 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈 (Stack) 里面,读写速度较快. 其他变量,如静态变量.等,都在堆实例变量 (heap) 中创建,读写速度较慢. 清单 12 所示代码演示了使用局部变量和静态变量的操作时间对比. 位运算代替乘除法 位运算(>>    <<)是所有的运算中最为高效的. 一维数组代替二维数组  JDK 很多类库是采用数组方式实现的数据存储,比如 ArrayList.Vector 等,数组的优点是随

Java程序调用javascript等脚本的实现方法

public static void main(String[] args) throws FileNotFoundException, ScriptException, NoSuchMethodException{ ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript"); //建立上下文环境 Bindings bind = engine.createBindings(); bind.p

dos命令下运行java程序(链接mysql为例子)

1 说明 使用了阿里云的Windows版的服务器,想在上面运行连接数据库的Java程序,然后就不知道,怎么运行起来.我是直接把eclipse中的文件拷到服务器上的.所有的.class 文件已经编译完成,只是不知道怎么在服务器上运行起来. 问题点1 :找不到要运行的类 问题点2 :找不到驱动,也就是无法运行导入的jar包 问题1的解决: –因为我的DBHelper文件中包含有package package mydatahelper; 所以运行时类名称则写为 mydatahelper.DBHelpe

redis(Springboot中封装整合redis,java程序如何操作redis的5种基本数据类型)

平常测试redis操作命令,可能用的是cmd窗口 操作redis,记录一下 java程序操作reids, 操作redis的方法 可以用Jedis ,在springboot 提供了两种 方法操作 RedisTemplate 和StringRedisTemplate 两种方法的区别 可参考:https://blog.csdn.net/yifanSJ/article/details/79513179 当然 springboot 中也可以使用Jedis ,本次记录的是 如何使用RedisTemplate