В окне приложения Swing не отображаются изменения
Я делаю Java-проект, используя eclipse и плагин windowbuilder. После завершения логики я создал окно приложения и выполнил проект, все в порядке. Но теперь я хочу изменить окно, поэтому я изменил название, например. В визуальном представлении я вижу эти изменения, но когда я запускаю приложение, изменений нет, это всегда одно и то же окно. Это код:
public class Application {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Application window = new Application();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Application() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("My Application");
}
}
Я только что добавил одну строку, поэтому я не знаю, что может быть не так. Я также хочу знать, если это лучший способ сделать приложение с графическим интерфейсом (с помощью окна приложения) или есть лучшие способы.
РЕДАКТИРОВАТЬ: я добавляю несколько изображений, чтобы показать, в чем проблема
Окно, когда я выполняю:
Окно в оконостроителе:
4 ответа
Вы можете установить заголовок двумя способами:
1. Установите заголовок, используя метод setFitle() JFrame: frame.setTitle("My Application");
2. Установите заголовок, используя конструктор JFrame (String Title): frame = new JFrame("My Application");
По моему мнению, оба способа работают, чтобы установить заголовок, но, тем не менее, если вы боретесь с первым вариантом, вы можете попробовать второй вариант. Может быть, этот код работает для вас.
private void initialize() {
frame = new JFrame("My Application");
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
Пожалуйста, попробуйте это:
try {
Application window = new Application();
window.frame.setVisible(true);
window.frame.setTitle("My Application");
} catch (Exception e) {
e.printStackTrace();
И дай мне знать результат.
Редактировать: удалить setTitle() из метода инициализации.
Изменить: Если вы новичок, вы можете попробовать JavaFX. Он также прост, как Java Swing, но имеет больше возможностей, лучших вариантов дизайна и прочего. Это то, с чем я пробовал, когда начинал изучать Java.
Я думаю, что вы должны удалить ваши качели и установить его снова. Потому что любое решение не работает, и нет другой причины не делать этого. Просто попробуйте переустановить качели.
После изменения настроек перейдите frame.dispose()
и после этого вы можете
frame.repaint();
frame.revalidate();