GUI в Java .. генерация компонента времени выполнения - PullRequest
1 голос
/ 25 июля 2011

У меня есть пользовательский интерфейс, где пользователь вводит число (например, 10) в текстовое поле затем, если пользователь нажимает Enter, я хочу, чтобы в одном и том же интерфейсе пользователя было сгенерировано 10 текстовых полей.

как я могу это сделать?

Ответы [ 4 ]

2 голосов
/ 25 июля 2011

Примерно так:

// Assuming myOrigTextField is your original JTextField
int howMany = Integer.parseInt(myOrigTextField.getText());
JTextField[] jtfs = new JTextField[howMany];

for (int i = 0; i < jtfs.length; ++i) {
   jtfs[i] = new JTextField();
   myPanelToAddThem.add(jtfs[i]);
}
1 голос
/ 25 июля 2011

если пользователь нажимает Enter, я хочу? текстовые поля, которые будут сгенерированы в том же пользовательском интерфейсе

Вы добавляете ActionListener в текстовое поле. ActionListener будет вызываться при нажатии клавиши Enter.

В коде ActionListener вам необходимо проанализировать введенный номер, а затем выполнить цикл для создания и добавления текстовых полей на панель:

for (...)
{
    panel.add( new JTextField(...) );
}

panel.revalidate(); // needed when dynamically adding/removing components
panel.repaint(); // sometimes needed
1 голос
/ 25 июля 2011

Если предположить, что вы используете менеджер компоновки, я бы сказал так:

public List<JTextField> addComponents( int number ) {
    List<JTextField> fields = new ArrayList<JTextField>( number );
    for( int i = 0; i < number; i++ ) {
        fields.add( new JTextField() );
        panelToAddComponentsTo.add( fields.get( i ) );
    }
    return fields;
}
1 голос
/ 25 июля 2011

Создание объектов текстового поля, добавьте их в свой контейнер.

Используйте цикл, чтобы сделать это с произвольным числом.

Отправьте код и ваши конкретные проблемы для получения дополнительной помощи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...