【发布时间】:2018-02-02 17:57:03
【问题描述】:
我是新人,但我一直在寻找,现在是时候请教各位伙伴了。 我在 java 中有这个简单的应用程序,其中包括 JComboBox 的 itemListener。 我不知道为什么,但是它不听,但是当我将 JComboBox 放在层次结构的上层时,它可以工作,并且 itemListener 工作正常。任何想法为什么它在较低级别不起作用?
import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class Notatnik extends JFrame {
JMenuBar menu;
JMenu tools, fontColor;
JComboBox<String> colors;
public Notatnik() {
this.setSize(500, 400);
menu = new JMenuBar();
tools = new JMenu("tools");
fontColor = new JMenu("Font color");
colors = new JComboBox<String>();
colors.addItem("red");
colors.addItem("green");
colors.addItem("blue");
colors.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
System.out.println(e.getItem().toString());
}
});
fontColor.add(colors);
tools.add(fontColor);
menu.add(tools);
this.setJMenuBar(menu);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
【问题讨论】:
-
等等,你是在向 JMenu 添加一个 JComboBox 吗?
-
我的朋友补充说,我只是在想“嘿,这可能吗?”所以我检查并添加到 JMenu,然后添加到 JMenuBar,使用 JMenuBar 可以工作,而使用 JMenu 则不能。那么...是否可以添加到JMenu中,然后如何控制呢?
-
不要认为这是可能的(无需对 UI 进行大量修改)。相反,我会: 1) 只为每种颜色显示 JRadioMenuItem。 2) 在添加到选项窗格的组合框中显示带有颜色的 JOptionPane。
标签: java swing jcombobox jmenubar itemlistener