我正在制作一个Java应用程序,我在其中显示了一些带有文件相关项目的复选框。根据选择,我必须相应地修改原始文件。我已经完成了这一部分。
我现在意识到可能有一些用户想要添加的信息。因此,我希望显示一个带有JTextField的复选框。我试图使用的想法是,如果checkbox的值为true,则与其关联的JTextField的值将包含在文件中。
我想做这样的事情:
checkBoxes[i] = new Checkbox(new JTextField("enter new member e.g private int newMember"), null, false);
然后
if(checkBoxes[i]==true)
{
updatefile(file, checkBoxes[i]);
}
其中updateFile
是一个将checkBoxes[i]
的值添加到文件
我对如何解决这个问题有任何想法?
答案 0 :(得分:1)
您可以将JTextField
作为单独的变量,并将它们放在JPanel
JTextField textField = new JTextField();
JCheckBox checkBox = new JCheckbox("enter new member e.g private int newMember",false);
JPanel panel = new JPanel();
panel.add(checkBox);
panel.add(textField);
然后像那样访问它
if(checkBox.isSelected())
{
updatefile(file, textField.getText());
}
希望它有所帮助。
答案 1 :(得分:1)
只需单独创建JTextField
,就不需要它们是同一个控件。
即
checkBoxes[i] = new JCheckBox("label");
textFields[i] = new JTextField("extra data");
// ...
if (checkBoxes[i].isSelected()) {
updateFile(file, textFields[i]);
}
如果要根据复选框的选定状态启用/禁用textFields,请使用侦听器执行此操作 - 例如ActionListener
:
checkBoxes[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textFields[i].setEnabled(checkBoxes[i].isSelected());
}