我正在用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
}
}
答案 0 :(得分:1)
我认为您只需删除此行:
PopupMenu popup = new PopupMenu();
这将导致以下所有行访问本地变量popup
,而不是您希望更新的字段。