很久不碰 java swing最近寫了一個swing 程序 添加托盤時,怎麼也不顯示圖標,就一空白 ,在網上搜了老半天,大部無效。 邊看帖子邊看 java api ,結合理解,有一屬性設置了一下,就出來了 代碼以下 java
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); 把這個屬性設置一下就好了。簡單易解。 api
再就是系統托盤顯示亂碼 測試
可是打包成 exe 就不亂碼。 這個解決方法是把整個項目設置成gbk 編碼. 而後 this
這樣亂碼也解決,打完收工。 編碼