JCheckBox 列表错误?

JCheckBox List error?

我正在 java 中编码一台谜机,当程序启动时,我会出现一个带有 5 个 JCheckBox 的 JOptionPane,供用户 select 使用哪个转子,在哪个转子中订单。

我的问题是,它们被添加到弹出窗口中,但实际上并未显示。 相反,我得到了所有 5 个复选框的大量读数,就好像我调用了它们的 toString 方法一样。 我在弹出窗口中有几个正确显示的 JLabel,以及底部的确定按钮。

我的列表是这样初始化的:

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 或创建与它在列表中相关的错误。

怎样才能让它正确显示?

您正在将列表添加到 JOptionPane,您应该将 JCheckBox 添加到 JPanel 并改用它

所以,而不是像...

JOptionPane.showMessageDialog(null, rotorCheckBox);

你应该使用更像...

JPanel panel = new JPanel();
for (JCheckBox cb : rotorCheckBox) {
    panel.add(cb);
}
JOptionPane.showMessageDialog(null, panel);

举个例子