给swing桌面程序新建一个系统托盘

可以在jframe的构造方法中加入如下方法:

//新建系统托盘
        private void createSystemTray() {
                try {
                        // 判断当前平台是否支持系统托盘
                        if (SystemTray.isSupported()) {
                                // 获得系统托盘
                                SystemTray st = SystemTray.getSystemTray();

                                // 新建一个系统托盘按钮并制定图片
                                Image image = Toolkit.getDefaultToolkit().getImage(systemTrayPicPath);// 定义托盘图标的图片
                                TrayIcon ti = new TrayIcon(image);

                                // 定义这个新建的托盘按钮
                                ti.setToolTip(TtConfig.msg.getProperty("title.system.tray"));
                                ti.addMouseListener(new MouseAdapter() {
                                        public void mouseClicked(MouseEvent e) {
                                                if (e.getButton() == MouseEvent.BUTTON1)// 鼠标左键单击,打开窗体
                                                        Main.getInstance().setVisible(!Main.getInstance().isVisible());
                                                Main.getInstance().setExtendedState(JFrame.NORMAL);
                                        }
                                });
                                PopupMenu p = new PopupMenu("OK");

                                MenuItem m1 = new MenuItem(TtConfig.msg.getProperty("menu.tray.open"));
                                m1.addActionListener(new ActionListener() {
                                        public void actionPerformed(ActionEvent e) {
                                                Main.getInstance().setVisible(true);
                                                Main.getInstance().setExtendedState(JFrame.NORMAL);
                                        }
                                });
                                p.add(m1);
                                p.addSeparator();
                                MenuItem m = new MenuItem(TtConfig.msg.getProperty("menu.tray.close"));
                                m.addActionListener(new ActionListener() {
                                        public void actionPerformed(ActionEvent e) {
                                                System.exit(0);
                                        }
                                });
                                p.add(m);
                                ti.setPopupMenu(p); // 为托盘添加右键菜单

                                // 将定义好的托盘按钮绑定到系统图盘上
                                st.add(ti);
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }

 

效果如下:


 

第一个小图标即是我的swing程序在系统托盘中的图标

你可能感兴趣的:(swing)