我想将JTextField作为复选框的一部分或以某种方式将它们连接在一起

时间:2011-11-09 10:29:56

标签: java swing checkbox selection jtextfield

我正在制作一个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]的值添加到文件

的函数

我对如何解决这个问题有任何想法?

2 个答案:

答案 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());
    }