silverhawk90
@silverhawk90
Серверный Java Developer

Как создавать динамические имена объектов?

Есть такой код:
Jpanel panel1 = new Jpanel();
for(int i=0; i<3; i++){
     JTextField textfield = new JTextField();
     panel1.add(textfield);
}

Мне нужно чтобы создалось три JTextField с названиями типа: textfield1, textfield2, textfield3.
Вариант с анонимными JTextField:
Jpanel panel1 = new Jpanel();
for(int i=0; i<3; i++){
     panel1.add(new JTextField());
}

не подходит, потому что мне нужно потому получать данные из этих полей.
Как мне это корректно реализовать?
  • Вопрос задан
  • 3619 просмотров
Решения вопроса 1
@dfire
List<JTextField> list = new ArrayLists<JTextField>();

for (int i=0; i<3; i++) { 
    JTextField textField = new JTextField();
    points.add(textField);
    list.add( textField ); 
}

Если нужны имена, то можно использовать Map
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@carbon88
.NET developer/ORM developer
Я что-то не пойму, вам нужно сформиовать имена переменных? но это бред, все равно вы эти филды в панель пихаете, и то имя переменной в которую вы инициализируете не играет никакой роли. а у филда должен быть уникальный идентификатор, по которому его можно однозначно определить и найти, например, имя. Но у JPanel нет метода поиска по имени среди вложенных в него компонент, так что придется поиск делать перебором или делать маппинг имени в индекс.
Ответ написан
@Malah
Если у вас ровно 3 поля ввода (конечное число), то вынесите их в члены класса, тогда у вас всегда будут на них ссылки из любого обработчика (в рамках класса окна или диалога). Создайте метод который будет инициализировать ваши поля. Например так:
private JTextField textfield1; // Фамилия
private JTextField textfield2; // Имя
private JTextField textfield3; // Отчество

private void createFields(JPanel panel) {
  textfield1 = new JTextField();
  textfield1.setText("Например значение по умолчанию");
  panel.add(textfield1);
  
  textfield2 = new JTextField();
  textfield2.setText("Например значение по умолчанию");
  panel.add(textfield2);

  textfield3 = new JTextField();
  textfield3.setText("Например значение по умолчанию");
  panel.add(textfield3);
}

// Ваш код станет выглядеть так
Jpanel panel1 = new Jpanel();
createFields(panel1)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы