Java GUI Создание компонентов - PullRequest
2 голосов
/ 15 декабря 2008

Надеюсь, правильно сказать, что компоненты в графическом интерфейсе похожи на JButton, JPanel, JTextField и все такое хорошее.

Я хочу создать текстовое поле, которое принимает целое число. Затем можно нажать кнопку «Отправить» и на основе введенного целого числа создать столько текстовых полей во всплывающем окне или что-либо подобное.

Понятия не имею, кто-нибудь может заставить меня начать в правильном направлении?

Проблема, с которой я столкнулся, заключается в том, что я понятия не имею, как создать цикл for для создания компонентов GUI. Я имею в виду, если у меня есть цикл for и сделать что-то вроде:

print("JTextField num1 = new JTextField()");

тогда в цикле for будет создано только 1 текстовое поле, когда я хочу много. Как в общем случае создать переменные JTextFields?

Спасибо за вашу помощь ...

Ответы [ 3 ]

6 голосов
/ 15 декабря 2008

Используйте соответствующий LayoutManager (например, GridLayout) для создания и добавления ваших текстовых полей.

for (i = 0; i < numberOfTextFields; i++) {
    JTextField textField = new JTextField();
    container.add(textField);
    /* also store textField somewhere else. */
}
1 голос
/ 15 декабря 2008

Попробуйте что-то вроде этого:

List<JTextField> nums = new ArrayList<JTextField>();
JTextField tempField;

for (int i = 0; i < 10; i++) {
    tempField = new JTextField();
    jPanel1.add(tempField); // Assuming all JTextFields are on a JPanel
    nums.add(tempField);
}

Не забудьте установить правильный менеджер раскладки для контейнера. (в данном случае jPanel1)

0 голосов
/ 15 декабря 2008

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

List fields = new ArrayList();

// Create as many elements as you need
for (int i = 0; i < numberOfElements; i++){
  JTextField field = new JTextField();
  // Add the fields to some panel so they are shown in the screen.  
  // I assume that the component is called parent panel
  parentPanel.add(field);

  // Store the component in the list so you can retrieve it later
  fields.add(field);
}

// ...

// When you want to retrieve a particular one:

JTextField field = (JTextField)fields.get( indexToRetrieve );
...