Java swing 仿QQ实现系统托盘图标(上)

来源:互联网 发布:sql exists in 效率 编辑:程序博客网 时间:2024/06/06 03:21

最近用java swing仿写QQ,想实现QQ图标显示在系统托盘的效果。研究了一下。废话不多说,进入正题。

首先定义窗体:

                //初始化窗体        JFrame frame=new JFrame("My QQ");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setSize(500, 500);        frame.setLocationRelativeTo(null);                ImageIcon img=new ImageIcon(Demo.class.getClassLoader().getResource("res/images/logo.gif"));        frame.setIconImage(img.getImage());

窗体建好了,准备添加系统托盘图标

                //得到当前系统托盘SystemTray systemtray = SystemTray.getSystemTray();//创建带指定图像、工具提示和弹出菜单的 TrayIconTrayIcon trayicon=new TrayIcon(img.getImage(),"My QQ",pm);//将TrayIcon添加到系统托盘try {systemtray.add(trayicon); } catch (AWTException e1) {e1.printStackTrace();}

但在添加系统托盘图标前还要先定义一下弹出菜单

               //定义弹出菜单PopupMenu pm=new PopupMenu();//定义弹出菜单项MenuItem openmenu = new MenuItem("打开主面板");MenuItem closemenu = new MenuItem("退出MyQQ");MenuItem online = new MenuItem("我在线上");MenuItem busy = new MenuItem("忙碌");MenuItem invisible= new MenuItem("隐身");//添加弹出菜单项到弹出菜单pm.add(openmenu);pm.add(closemenu);pm.add(online);pm.add(busy);pm.add(invisible);

现在来看看效果吧!


已经再系统托盘上显示了My QQ的图标了,现在在图标上点击鼠标右键试试,是否能看到有菜单弹出呢?偷笑。不过这时鼠标左键还不用用,鉴于一般都是点击鼠标左键显示窗体,下面为TrayIcon添加鼠标监听器。

//为trayicon添加鼠标监听器trayicon.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e) {//鼠标左键点击,设置窗体状态,正常显示if(e.getButton()==MouseEvent.BUTTON1){frame.setExtendedState(JFrame.NORMAL);}}});

现在最小化窗体,鼠标左键点击托盘图标已经可以显示窗体了。但是除了系统托盘外,该程序还在任务栏有显示,看着总是不爽,那么再加上一句

              frame.setType(Window.Type.UTILITY);

终于该程序没有在任务栏显示了,再运行下窗体,好像貌似最小/大化图标没有了,呃,,,委屈

可以去掉窗体装饰,自定义按钮,或者不去任务栏图标吧尴尬

             frame.setUndecorated(true);

去掉任务栏显示后,又发现单击鼠标左键不管用了,呃,,一波未平一波又起。。

试试在trayicon监听器里加上frame.setVisible(true);试试吧

//设置单击击系统托盘图标显示主窗口trayicon.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e) {//鼠标左键点击,设置窗体状态,正常显示if(e.getButton()==MouseEvent.BUTTON1){frame.setExtendedState(JFrame.NORMAL);frame.setVisible(true);}}});

到这里已经成功添加了系统托盘图标,不过托盘图标的弹出菜单PopupMenu貌似加不上图标,而TrayIcon又不支持JPopupMenu。委屈


下次再介绍怎么在系统托盘的弹出菜单上加图标吧吐舌头

原创粉丝点击