Некоторые сомнения по поводу Java SWING и Swing Application Framework
У меня есть простой класс Main, который использует Swing для отображения метки Hello World, но у меня есть некоторые сомнения по поводу этого кода, потому что я впервые создаю GUI на Java:
import javax.swing.JLabel;
import org.jdesktop.application.SingleFrameApplication;
public class Main extends SingleFrameApplication {
@Override
protected void startup() {
// TODO Auto-generated method stub
show(new JLabel("Hello World"));
}
public static void main(String[] args) {
Main a = new Main();
a.startup();
}
}
Мои сомнения:
Из того, что я понял, метод JLabel() - это чистый метод Swing, который просто создает текстовую метку, показывающую сообщение Hello World. В этом коде также используется метод startup(), который, насколько я понимаю, является методом класса **SingleFrameApplication, который относится к так называемой среде приложений Swing... но... что именно представляет собой эта среда приложений Swing? Это отдельный проект от Swing? Что мне дать?
Когда я запускаю приложение как классическое Java-приложение, отображается сообщение Hello World, но также появляется следующее сообщение об ошибке в консоли Eclipse:
набор 23, 2013 12:35:37 вечера org.jdesktop.application.ResourceManager getApplicationResourceMap Avvertenza: getApplicationResourceMap(): нет Класс приложения установлен 23, 2013 12:35:38 org.jdesktop.application.SingleFrameApplication initRootPaneContainer Avvertenza: восстановить сеанс [mainFrame.session.xml] java.lang.NullPointerException в org.jdesktop.application.LocalStorage.getApplicationId(LocalStorage.java:254) в org.jdesktop.application.LocalStorage.getDirectory(LocalStorage.javag:27).jdesktop.application.LocalStorage$LocalFileIO.getFile(LocalStorage.java:450) в org.jdesktop.application.LocalStorage$LocalFileIO.openInputFile(LocalStorage.java:417) в org.jdesktop.application.LocalStorage.In (LocalStorage.Inen:68) по адресу org.jdesktop.application.LocalStorage.load(LocalStorage.java:188) по адресу org.jdesktop.application.SessionStorage.restore(SessionStorage.java:381) по адресу org.jdesktop.application.SingleFrameApplication.inraraer.application.inteRer Java:210) в org.jdesktop.application.SingleFrameApplication.show(SingleFrameApplication.java:268) в Main.startup(Main.java:11) в Main.main(Main.java:19)
Зачем? Что это значит?
Tnx
Andrea
2 ответа
Чтобы создать и показать окно с меткой Hello World, вам нужно сделать как минимум следующее:
- Создание JFrame ( ссылка).
- Добавьте свой JLabel к нему.
- Покажите рамку.
Обучающее руководство по оракулу о том, как сделать фреймы ( ссылка), покажет вам, как это сделать. Для удобства я скопировал конкретный отрывок, который определяет / показывает ваше окно оттуда.
JFrame frame = new JFrame("FrameDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(175, 100));
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
//Display the window.
frame.pack();
frame.setVisible(true);
Вы расширяете SingleFrameApplication
Это класс инфраструктуры, который выполняет настройку и инициализацию пользовательского интерфейса, но вы не предоставляете ему никакой необходимой информации о конфигурации.