2014-01-05 30 views
0

我正在爲Java OS編寫一個系統托盤應用程序,用於獲取用戶計算機名稱,MAC地址和IP地址的OS X.我得到的信息和MenuItems加載正常。我的問題是當用戶信息發生變化時更新MenuItems。我添加了一個鼠標監聽器,當用戶點擊托盤圖標時,它將重建MenuItems。我添加了popup.removeall(),然後重做我的MenuItems,但它不起作用。什麼是更新我的MenuItems的正確方法?Java更新MenuItems

public void mouseClicked(MouseEvent e) 
       { 

        try 
        { 
        popup.removeAll(); 



        PopupMenu popup = new PopupMenu(); 
        MenuItem defaultItem = new MenuItem("Exit"); 
        defaultItem.addActionListener(exitListener); 
        MenuItem userIP1 = new MenuItem(getIP()); 
        MenuItem userMAC1 = new MenuItem(getMac()); 
        MenuItem computerName1 = new MenuItem(getComputerName()); 


        popup.add(computerName1); 
        popup.add(userMAC1); 
        popup.add(userIP1); 
        popup.add(defaultItem); 
        try 
        { 
        tray.add(trayIcon); 
        } 
        catch(Exception e2) 
        { 
         //Empty 
        } 

        } 


        catch(UnknownHostException e1) 
        { 
         //Empty 

        } 
       } 

回答

1

我想你只需要刪除此行:

PopupMenu popup = new PopupMenu(); 

這將導致所有的以下行來訪問本地變量popup而不是你期待更新的領域。

+0

標記你是男人!希望我能給你買一杯啤酒。 – Lgwells1