java - 获取 JCheckBox 选中框的值

标签 java swing jcheckbox

我想问一下有没有办法不用actionListener就可以从JCheckBox获取信息。在我的代码中,我扫描了一个字符串文件,每一行都有数据,如果被选中,应该将这些数据添加到我程序中的一个数组中。问题是我永远不知道我将拥有多少个 JCheckBox,这取决于文件。

所以,我的问题是如何通过按下按钮 (ok) 将选定的字符串放入数组(或列表),这样我就可以用它们做其他事情(在我的例子中,我需要从文件或从手动输入并将其放入红黑树中,因此我需要将选定的字符串推送到我的 putDataInTheTree 方法)。

编辑:另外,是否可以不显示那些已经添加到程序中的 JCheckBoxes? IE。如果我选择流体,下次我调用输入法时,流体不会显示在我的面板中吗?

提前致谢!

外观:

enter image description here

到目前为止我的代码是:

public void input() {
    try {
        mainWindow.setEnabled(false);
        fromFile = new JFrame("Input from file");
        fromFile.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        fromFile.setLayout(new BorderLayout());
        fromFile.setSize(300,200);
        panelFromFile = new JPanel();
        panelFromFile.setLayout(new java.awt.GridLayout(0,1));
        JScrollPane scrollPane2 = new JScrollPane(panelFromFile); 
        scrollPane2.setMaximumSize(new Dimension(300, 180));

        FileReader File = new FileReader(data);
        BufferedReader Buffer = new BufferedReader(File); 
        while ((info = Buffer.readLine()) != null) {
            if (info != null) {
                JCheckBox check = new JCheckBox(info);
                panelFromFile.add(check);
            }
        }
        ok = new JButton("ok");
        ok.addActionListener(this);
        fromFile.add(scrollPane2, BorderLayout.CENTER);
        fromFile.add(ok, BorderLayout.SOUTH);
        fromFile.setLocationRelativeTo(null);
        fromFile.setResizable(false);
        fromFile.setVisible(true);
    }
    catch(Exception e) {
        text.append("Error in INPUT method");
        text.append(System.getProperty("line.separator"));
    }
}

最佳答案

将您的复选框添加到集合中,当按下按钮时,遍历复选框并获取与每个选中的复选框关联的文本:

private List<JCheckBox> checkBoxes = new ArrayList<JCheckBox>();
...
    while ((info = Buffer.readLine()) != null) {
        if (info != null) {
            JCheckBox check = new JCheckBox(info);
            panelFromFile.add(check);
            this.checkBoxes.add(check);
        }
    }

...
public void actionPerformed(ActionEvent e) {
    List<String> infos = new ArrayList<String>();
    for (JCheckBox checkBox : checkBoxes) {
        if (checkBox.isSelected() {
            infos.add(checkBox.getText());
        }
    }
    // TODO do something with infos
}

关于java - 获取 JCheckBox 选中框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13432941/

相关文章:

java - 正确实现所有相等对象的属性

java - 弹出菜单项图标

java - 如何让我的代码找出在合理的时间内按下了哪个按钮?

java - JTable - 在一个单元格中呈现复选框

java - JCheckBox不触发isselect

Java 多个复选框

java - 在 JDBC 或 Spring JDBC 中使用 REF CURSOR 的替代方案?

java - 部署新版本 (com.google.common.cache.CacheBuilder)

java - 单击按钮打开静态表单/jFrame

java - Apache poi 创建错误的 Excel 文件