我正在用java编写一台谜式机器,当程序启动时,我有一个带有5 JCheckBoxes的JCheckBoxes,用户可以选择使用哪个转子,以及使用哪个顺序。
我的问题是,它们被添加到弹出窗口中,但是它们实际上没有显示。相反,我得到了所有5个复选框的大量读取,就好像我调用了他们的toString方法一样。我在弹出窗口上有几个正确显示的JLabels,底部还有OK按钮。
我的列表初始化如下:
private final List<JCheckBox> rotorCheckBox = Arrays.asList(new JCheckBox(
"Rotor 1"), new JCheckBox("Rotor 2"), new JCheckBox("Rotor 3"),
new JCheckBox("Rotor 4"), new JCheckBox("Rotor 5"));我不知道它为什么要这样做,它以前是作为数组工作的,而且我一直在尝试转换它,这样我就不必经常对它调用Arrays.asList()。我已经在我的代码中检查了它的每一次使用,没有任何东西被称为toString,也没有创建与它在列表中相关的错误。
如何使它正确显示?
发布于 2015-06-18 22:10:32
如果将列表添加到JOptionPane中,则应该将JCheckBox添加到JPanel中,然后使用该列表。
所以,而不是像.
JOptionPane.showMessageDialog(null, rotorCheckBox);你应该用更像..。
JPanel panel = new JPanel();
for (JCheckBox cb : rotorCheckBox) {
panel.add(cb);
}
JOptionPane.showMessageDialog(null, panel);举个例子
https://stackoverflow.com/questions/30926534
复制相似问题