2014-01-05 24 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