Нестабильное отображение элементов на фрейме - Java
Формулировка задачи:
Добдень,
Такой баг(картинку прикрепил):
Создал фрейм, добавил прогресбар, запускаю - фрейм пустой, потянул за него (изменил размер фрейма) - статусбар появился. заметил что если прописать фрейму setVisible(true) в самом конце (после создания и добавления прогресбара), то все отображается нормально, а если создать фрейм, прописать setVisible(true), а потом создавать и добавлять другие компоненты графики, то происходит такой баг.Это только у меня так из за свойст видеокарты, или все верно, и метод setVisible(true) должен прописываться после всех операций с компонентами на фрейме? Спасибо.
Структура кода при которой проявляется этот баг:
Листинг программы
- JFrame f = new JFrame("JProgressBar");
- f.setSize(400, 400);
- f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- f.setLayout(new GridBagLayout());
- f.setVisible(true);
- JProgressBar progressBar = new JProgressBar();
- progressBar.setStringPainted(true);
- progressBar.setIndeterminate(true);
- progressBar.setMinimum(0);
- progressBar.setMaximum(100);
- f.add(progressBar);
- for(int i = progressBar.getMinimum(); i<=progressBar.getMaximum();i++){
- Thread.sleep(100);
- progressBar.setValue(i);
- }
Решение задачи: «Нестабильное отображение элементов на фрейме»
textual
Листинг программы
- public class Progress extends JProgressBar {
- Progress() {
- super();
- super.setStringPainted(true);
- super.setIndeterminate(true);
- super.setMinimum(0);
- super.setMaximum(100);
- }
- }
- public void startProgressBar() {
- for(int i = super.getMinimum(); i<=super.getMaximum();i++){
- Thread.sleep(100);
- super.setValue(i);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д