Java Update MenuItems

时间:2014-01-05 20:55:37

标签: java drop-down-menu menuitem system-tray trayicon

我正在用Java编写一个用于OS X的系统托盘应用程序,它可以获取用户的计算机名称,MAC地址和IP地址。我得到的信息和MenuItems加载正常。我的问题是当用户的信息发生变化时更新MenuItems。我添加了一个鼠标监听器,当用户点击托盘图标时,它会重建MenuItems。我添加了一个popup.removeall(),然后重做我的MenuItems,但它不起作用。更新我的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 个答案:

答案 0 :(得分:1)

我认为您只需删除此行:

PopupMenu popup = new PopupMenu();

这将导致以下所有行访问本地变量popup,而不是您希望更新的字段。