Некоторые сомнения по поводу 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();
    }

}

Мои сомнения:

  1. Из того, что я понял, метод JLabel() - это чистый метод Swing, который просто создает текстовую метку, показывающую сообщение Hello World. В этом коде также используется метод startup(), который, насколько я понимаю, является методом класса **SingleFrameApplication, который относится к так называемой среде приложений Swing... но... что именно представляет собой эта среда приложений Swing? Это отдельный проект от Swing? Что мне дать?

  2. Когда я запускаю приложение как классическое 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Это класс инфраструктуры, который выполняет настройку и инициализацию пользовательского интерфейса, но вы не предоставляете ему никакой необходимой информации о конфигурации.

Другие вопросы по тегам