TrayIcon 类 添加系统托盘不显示托盘图标

好久不碰 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);  把这个属性设置一下就行了。简单易解。

再就是系统托盘显示乱码

1

但是打包成 exe 就不乱码。 这个解决方法是把整个项目设置成gbk 编码. 然后

2

3

这样乱码也解决,打完收工。

你可能感兴趣的:(java,系统托盘,trayicon)