gpt4 book ai didi

java - 苹果的JAVA : JMenu's submenu is not being updated

转载 作者:搜寻专家 更新时间:2023-11-01 02:51:12 25 4
gpt4 key购买 nike

正如我在上一个问题中提到的那样,我在 Apple 的 JVM 中遇到了一些错误。我可以忍受第一个错误。但是第二个真的很烦人。如果我创建一个带有子菜单的 JMenu,并且我必须在运行时修改子菜单内容,我就做不到。调试显示项目已添加到 Jmenu(子菜单)。但是屏幕菜单栏中没有任何反应。这看起来像是真实 JMenu 对象及其在 Mac OS X 菜单栏中的表示的同步问题。

示例代码如下:

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;


public class TestMenu extends JFrame{

public TestMenu() {
System.setProperty("apple.laf.useScreenMenuBar", "true");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
JMenuBar mb = new JMenuBar();
mb.setName("menubar");
JMenu menu = new JMenu("menu");
JMenu submenu = new JMenu("submenu");
JMenuItem item = new JMenuItem("test item");
JMenuItem item2 = new JMenuItem("test item2");
JMenuItem subitem1 = new JMenuItem("sub item1");
JMenuItem subitem2 = new JMenuItem("sub item2");
menu.add(item);
mb.add(menu);
menu.add(submenu);
setJMenuBar(mb);
menu.add(item2);
setBounds(100, 100, 100, 100);
setVisible(true);
submenu.add(subitem1);
submenu.add(subitem2);
}

public static void main(String[] args) {

new TestMenu();

}

}

注意:我指的是 Apple JVM 的 1.6.0_15 版。我必须记住过时的版本,以确保我的软件不会因为用户计算机上某些 JVM 中的错误而暴露任何数据,这些错误自他或她购买该 MAC 后就没有更新过。适用于 Windows 和 Mac OS X 的当前 Java 版本运行良好。问题本身:也许有人知道手动同步 JMenu 及其表示的方法?或者您可以提出另一种解决方法?

最佳答案

我找到了解决方案,而且并不难......

.................................
menu.add(item2);
setBounds(100, 100, 100, 100);
setVisible(true);
submenu.add(subitem1);
submenu.add(subitem2);
SwingUtilities.updateComponentTreeUI(mb); //This line updates menu representation
}
................................

关于java - 苹果的JAVA : JMenu's submenu is not being updated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10800113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com