迭代 HashMap 以将 JMenuItem(s) 添加到 JMenu(s)
Iterate over HashMap to add JMenuItem(s) to JMenu(s)
我需要将相同的 JMenuItems 添加到两个不同的 JMenu,但我的代码无法正常工作。
private void addToMenu(JMenu m, JMenu m2) {
for (Entry<Integer, JMenuItem> item : items.getJMenuItems().entrySet()) {
JMenuItem i = item.getValue();
m.add(i);
m2.add(i);
item.getValue().addActionListener(new ChangeColorOnClick(ground.getColorByValue(item.getKey()), textArea));
}
问题是 JMenuItems 仅添加到 m2
菜单,就像第二个菜单从 m
添加项目一样,因为 m
是空的。我该如何处理?
据我所知,一个组件只能有一个父组件。这就是为什么你只在第二个菜单上看到它的原因......
所以你要做的是创建单独的菜单项,重新使用相同的操作对象。
祝你好运。
我发现有用的解决方案是为我需要填充的每个 JMenu
创建包含 JMenuItem
(s) 集合的新对象。
我需要将相同的 JMenuItems 添加到两个不同的 JMenu,但我的代码无法正常工作。
private void addToMenu(JMenu m, JMenu m2) {
for (Entry<Integer, JMenuItem> item : items.getJMenuItems().entrySet()) {
JMenuItem i = item.getValue();
m.add(i);
m2.add(i);
item.getValue().addActionListener(new ChangeColorOnClick(ground.getColorByValue(item.getKey()), textArea));
}
m2
菜单,就像第二个菜单从 m
添加项目一样,因为 m
是空的。我该如何处理?
据我所知,一个组件只能有一个父组件。这就是为什么你只在第二个菜单上看到它的原因...... 所以你要做的是创建单独的菜单项,重新使用相同的操作对象。
祝你好运。
我发现有用的解决方案是为我需要填充的每个 JMenu
创建包含 JMenuItem
(s) 集合的新对象。