好久不碰 java swing最近写了一个swing 程序 添加托盘时,怎么也不显示图标,就一空白 ,在网上搜了老半天,大部无效。 边看帖子边看 java api ,结合理解,有一属性设置了一下,就出来了 代码如下
if (java.awt.SystemTray.isSupported()) {// 判断当前平台是否支持系统托盘 java.awt.SystemTray st = java.awt.SystemTray.getSystemTray(); java.awt.TrayIcon ti = new java.awt.TrayIcon(image); ti.setImageAutoSize(true); // ti.setToolTip("改变窗体测试"); PopupMenu p = new PopupMenu("OK"); MenuItem m = new MenuItem("退出"); m.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(autoLoginManager != null){ autoLoginManager.exitAllAccount(); } System.exit(0); } }); p.add(m); MenuItem m1 = new MenuItem("显示"); m1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { MainFrame.this.setVisible(true); MainFrame.this.setExtendedState(JFrame.NORMAL); } }); p.add(m1); MenuItem m2 = new MenuItem("最小化"); m2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { MainFrame.this.setVisible(false); } }); p.add(m2); ti.setPopupMenu(p); // 为托盘添加右键菜单 st.add(ti); ti.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ if(e.getClickCount() == 2){ //JOptionPane.showMessageDialog(null, "doubleClicked!"); MainFrame.this.setVisible(true); MainFrame.this.setExtendedState(JFrame.NORMAL); } } }); }
ti.setImageAutoSize(true); 把这个属性设置一下就行了。简单易解。
再就是系统托盘显示乱码
但是打包成 exe 就不乱码。 这个解决方法是把整个项目设置成gbk 编码. 然后
这样乱码也解决,打完收工。