2015-09-24 4 views
0

Пожалуйста, кто-нибудь может помочь мне с этим кодом. Я работаю над проектом, который требует динамически созданного текстового поля, хотя мне удалось создать текстовое поле, но я не смог получить пользовательский ввод, который мне нужно сохранить в массиве. Вот код, который я использовал;Как получить значения динамически созданного текстового поля

Public void actionPerformed(ActionEvent e){ 
    String value = textField.getText(); 
    int values = Integer.parseInt(value); 
    int sum = 10; 
    for(int I=0; I < values; I++){ 
     TextField field = new TextField(); 
     field.setBound(10,sum,107,22); 
     Panel.add(field); 
     sum += 28; 
     } 
    } 
}); 

Но я не смог написать удачный код, чтобы получить значения textFields.

ответ

6

Ваша проблема заключается в доступе к ссылке - значит, когда вы создаете объект, у вас нет простого способа получить приличную ссылку на него, когда вам это нужно. Решение состоит в том, чтобы использовать коллекцию, такую ​​как ArrayList<TextField>, как поле вашего класса, а затем поместить созданные вами объекты в эту коллекцию. Затем, если они вам понадобятся, вы можете легко получить их из коллекции.

Немного побочных рекомендаций:

  • Почему AWT компоненты и не свинг? Другими словами, используйте ArrayList<JTextField> и заполните его с помощью JTextFields, а не с TextFields.
  • Избегайте setBounds(...) и null макетов, так как это делает очень негибкий графический интерфейс, так как они могут выглядеть хорошо на одной платформе, выглядят ужасно на большинстве других платформ или разрешениях экрана, которые очень сложно обновить и поддерживать.

  • Избегайте «магические» числа, такие, как жестко закодированных чисел здесь: field.setBound(10,sum,107,22);

  • менеджеры Использование макета вместо.
  • Вы хотите узнать и использовать Java naming conventions. Имена переменных должны начинаться с нижней буквы, а имена классов - с буквой верхнего регистра. Изучение этого и последующее это позволит нам лучше понять ваш код и позволит вам лучше понять код других.
+0

Спасибо большое, я очень признателен за ваш ответ –

+0

В коде, который я разместил, произошла ошибка. Предположим, что это panel.add (поле); и то же самое происходит для for (int i = 0; i

Смежные вопросы