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。。
下次再介绍怎么在系统托盘的弹出菜单上加图标吧
阅读全文
1 0
- Java swing 仿QQ实现系统托盘图标(上)
- Java swing 仿QQ实现系统托盘图标(下)
- Java Swing实现仿QQ
- JAVA SWING 系统托盘(右下角小图标)
- java实现系统托盘图标
- Java swing 仿QQ实现账号密码输入框
- Swing学习----------实现仿QQ注册功能
- Windows系统托盘图标程序之Java实现
- Windows系统托盘图标程序之Java实现
- Swing实现系统托盘功能
- Java Swing实现的仿QQ气泡消息聊天窗口效果
- c++实现系统托盘图标
- c++实现系统托盘图标
- 系统托盘图标的实现
- Delphi实现系统托盘图标
- VC实现系统托盘图标
- vC++ 系统托盘图标实现
- C#实现系统托盘图标
- JQuery基础_02
- duilib 入门三之UIManager
- ngx_lua 模块
- Android音频系统之AudioTrack(二)
- 【回溯】八皇后的那些事儿
- Java swing 仿QQ实现系统托盘图标(上)
- CodeForces 217 A.Ice Skating(并查集)
- 累死你的不是工作,而是工作方式
- poj 3250 Bad Hair Day(单调栈)
- Telnet、Mstsc、SSH之间的比较和区别
- POJ2125 Destroying The Graph(最小割求割点)
- XML
- duilib 入门四之UIBase
- Linux文件前面加点例如.bashrc表示什么意思