Java 更新菜单项

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

我正在用 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/

相关文章:

android - 使用图标和标题将 MenuItem 添加到 NavigationView?

java - 在 Galaxy S5 上使用 intent-filter 打开 .zip 文件

java - @test 注释在 testNG 中如何工作?

java - 带有图像背景的 JPanel

vb.net - 在下拉列表中获取所有映射的网络驱动器

javascript - CSS 菜单仅在 IE 中隐藏在 flash 后面(SWFObject)

wordpress - 如何将自定义菜单添加到 Wordpress 中的某个位置

java - 如何保存屏幕截图(matlab)

php - select内连接,sql和php的group_concat

html - 如果子菜单是主菜单的一部分,如何激活菜单