Я сделал очень простой графический интерфейс на Java, но когда я запускаю программу, GUI действует странно!
Как только я запустил приложение: графический интерфейс выглядит следующим образом:
Как только я просто минимизирую его и верну его, он показывает, что это так:
Это очень простой код:
public class Prova2 {
public static void main(String[] args) {
JFrame frame = new JFrame("A Simple GUI");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(650, 120);
frame.setLocation(430, 100);
JPanel panel = new JPanel();
frame.add(panel);
JLabel lbl = new JLabel("Select one of the possible choices and click OK");;
lbl.setVisible(true);
panel.add(lbl);
String[] choices = { "CHOICE 1","CHOICE 2", "CHOICE 3","CHOICE 4","CHOICE 5","CHOICE 6"};
JComboBox<String> cb = new JComboBox<String>(choices);
cb.setVisible(true);
panel.add(cb);
JButton btn = new JButton("OK");
panel.add(btn);
}
}
Что мне не хватает, чтобы показать тонкий графический интерфейс (со всем его элементом), как только я запустил приложение?
Это раздражает необходимость минимизировать или изменить размер окна, чтобы правильно показать графический интерфейс!
Я тестировал ваш код, и проблема заключается в том, что вы устанавливаете видимость на true
прежде чем создавать элементы внутри своего JFrame
. Так что просто вырезаем frame.setVisible(true);
и вставьте его в качестве последней строки конструктора.
Также я вижу, что вы не используете менеджер макетов, который рекомендуется использовать. Проверьте это для информации.
Использовать менеджер компоновки
Следуйте основному принципу Swing Toolkit: весь пользовательский интерфейс должен управляться и запускаться по потоку EDT (поток пользовательского интерфейса). Вот очень хорошее объяснение. Http://www.pushing-pixels.org/2007/12/06/unwritten-rule-of-working-with-swings-edt.html