자바

2013-06-23 4 views
4

에 TrayIcon에 대한의 PopupMenu의 LAF 변경 I 받아들이는 PopupMenu와 TrayIcon에를 만들려면 다음 코드가 :이 코드는 PopupMenu를 가진 TrayIcon에를 생성하기위한 것입니다자바

public void addToTray() 
{ 
    try 
    { 
     try { 
      //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
      UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     PopupMenu popMenu= new PopupMenu(); 
     MenuItem exititem = new MenuItem("Exit"); 
     popMenu.add(exititem); 

     BufferedImage trayImg = ImageIO.read(new File("Geqo.png")); 
     ImageIcon ii = new ImageIcon(trayImg); 
     TrayIcon trayIcon = new TrayIcon(ii.getImage(), "Geqo", popMenu); 
     trayIcon.setImageAutoSize(true); 
     SystemTray.getSystemTray().add(trayIcon); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

합니다. 이것은 잘 작동합니다. 그러나 나는 기본 LAF (금속, 나는 생각한다)처럼 did'nt한다. 그래서 LAF를 Nimbus, OS Default, Windows로 변경하려고했지만 아무 소용이 없었습니다. LAF는 변화하지 않는 것 같습니다. LAF를 바꿀 수있는 방법에 대해 누군가 나를 괴롭힐 수 있습니까? 미리 감사드립니다 :) !!

답변

3

Popup은 스윙 구성 요소가 아니기 때문에 (따라서 LookAndFeel 관리자가 제어하지 않습니다).

Popup은 일반적으로 기본 구성 요소를 사용하는 AWT 구성 요소입니다.

대신 .......

public void addToTray() 
{ 
    try 
    { 
     try { 
      //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
      UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     BufferedImage trayImg = ImageIO.read(new File("Geqo.png")); 
     ImageIcon ii = new ImageIcon(trayImg); 
     final TrayIcon trayIcon = new TrayIcon(ii.getImage(), "Geqo", null); 

     JPopupMenu jpopup = new JPopupMenu(); 
     JMenuItem miExit = new JMenuItem("Exit"); 
     jpopup.add(miExit); 

     miExit.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
       SystemTray.getSystemTray().remove(trayIcon); 
       System.exit(0); 
      } 
     }); 

     trayIcon.addMouseListener(new MouseAdapter() { 
      public void mouseReleased(MouseEvent e) { 
       if (e.isPopupTrigger()) { 
        jpopup.setLocation(e.getX(), e.getY()); 
        jpopup.setInvoker(jpopup); 
        jpopup.setVisible(true); 
       } 
      } 
     }); 

     trayIcon.setImageAutoSize(true); 
     SystemTray.getSystemTray().add(trayIcon); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

Using JPopupMneu in TrayIcon

에서 제안 된 아이디어를 기반으로 ... 더 뭔가를 시도해야한다