Mar*_*nas 4 java swing jcheckbox
我想问一下,如果没有actionListener,有没有办法从JCheckBox获取信息.在我的代码中,我扫描一个字符串文件,每行都有数据,如果选中,应该添加到我的程序中的数组中.问题是我永远不会知道我将拥有多少个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"));
}
}
Run Code Online (Sandbox Code Playgroud)
将复选框添加到集合中,按下按钮后,遍历复选框并获取与每个选中复选框关联的文本:
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34109 次 |
| 最近记录: |