Java в интерфейсе repaint () проблема?

У меня есть JFrame. Этот JFrame содержит JButton. Я нажимаю JButton и 10 JTextFields созданы.

проблема: я не могу видеть их, пока "я не заставлю repaint ()", изменяя размеры окна. Только тогда я вижу созданные JTextFields.

КОД:

JPanel points = new JPanel();

//Creating the JTextFields:
for (int i=0; i<10; i++) {
    JTextField textField = new JTextField();
    points.add(textField);
}

repaint();
this.repaint();
super.repaint();
points.repaint();

СПАСИБО - после цикла for я просто вызвал points.validate () и все заработало ...

15.12.2008 21:52:23
И вам не нужно вызывать перекрасить, так как проверка сделает это.
Paul Tomblin 15.12.2008 22:03:38
1 ОТВЕТ
РЕШЕНИЕ

Container.add Документы API говорят:

Примечание. Если компонент был добавлен в отображаемый контейнер, в этом контейнере должна быть вызвана validate для отображения нового компонента. Если добавляется несколько компонентов, вы можете повысить эффективность, вызвав команду validate только один раз, после добавления всех компонентов.

Это неясно и не очень умно, но это правила. Может быть лучше позвонитьJComponent.revalidate

15
15.12.2008 22:01:07
Также убедитесь, что это изменение пользовательского интерфейса выполняется в потоке диспетчеризации событий.
Paul Brinkley 15.12.2008 22:08:10