Проблема с перекраской Java GUI()?
-
21-08-2019 - |
Вопрос
У меня есть JFrame.Этот JFrame содержит JButton.Я нажимаю кнопку JButton, и создаются 10 полей JTextField.
проблема:Я не могу их видеть до тех пор, пока не «я принудительно перерисую()», изменив размер окна.Только тогда я вижу созданные 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(), и это сработало...
Решение
Container.add
Документы API говорят:
Примечание:Если компонент был добавлен в отображаемый контейнер, в этот контейнер должен быть вызван для отображения нового компонента.Если добавляются несколько компонентов, вы можете повысить эффективность, вызывая проверку только один раз, после того как все компоненты были добавлены.
Это непонятно и не очень умно, но таковы правила.может лучше позвонить JComponent.revalidate