我正在用 Java 为 OS X 编写一个系统托盘应用程序,它获取用户的计算机名称、MAC 地址和 IP 地址。我得到了信息并且菜单项加载得很好。我的问题是当用户信息更改时更新菜单项。我添加了一个鼠标监听器,当用户单击托盘图标时,它将重建菜单项。我添加了 popup.removeall() 然后重做我的 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
}
}
最佳答案
我认为你只需要删除这一行:
PopupMenu popup = new PopupMenu();
这将导致以下所有行访问局部变量 popup
而不是您期望更新的字段。
关于Java 更新菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20939058/