我想问有没有办法从 JCheckBox 获取信息而无需 actionListener。在我的代码中,我扫描一个字符串文件,每行都有数据,如果选择,应该将其添加到我程序中的数组中。问题是我永远不会知道我将拥有多少个 JCheckBox,这取决于文件。
所以,我的问题是如何通过按下按钮(确定)将选定的字符串放入数组(或列表)中,这样我就可以用它们做其他事情(在我的情况下,我需要从文件或手动输入中获取数据和把它放在一个红黑树中,所以我需要将选定的字符串推送到我的 putDataInTheTree 方法)。
编辑:另外,是否可以不显示已经添加到程序中的那些 JCheckBoxes?IE如果我选择流体,下次我调用输入法流体不会显示在我的面板中?
提前致谢!
它的外观:

我的代码到目前为止:
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"));
    }
}