Я хочу сделать JTextField частью флажка или каким-то образом соединить их - PullRequest
1 голос
/ 09 ноября 2011

Я делаю Java-приложение, в котором я показываю пару флажков с соответствующим элементом из файла.Исходя из выбора, я должен соответствующим образом изменить исходный файл.Я сделал эту часть.

Теперь я понял, что может быть некоторая информация, которую пользователь хочет добавить дополнительно.Поэтому я хочу показать флажок с подключенным JTextField.Идея, которую я пытаюсь использовать, заключается в том, что если значение флажка равно 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 ]

1 голос
/ 09 ноября 2011

Просто создайте 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());
    }
1 голос
/ 09 ноября 2011

Вы можете иметь 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());
}

Надеюсь, это поможет.

...