关于Java SWING和Swing应用程序框架的一些疑问

时间:2013-09-23 10:54:34

标签: java swing user-interface swing-app-framework

我有这个简单的Main类,它使用swing来显示Hello World标签,但我对这段代码有些怀疑,因为这是我第一次用Java创建GUI:

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()方法,根据我的理解,该方法是属于所谓的 Swing应用程序框架的** SingleFrameApplication 类的方法。 ..但是...... Swing应用程序框架究竟是什么?它是一个与Swing分开的项目吗?什么给我?

  2. 当我将应用程序作为经典Java应用程序运行时,Hello World消息显示,但在Eclipse控制台中也出现以下错误消息:

  3.   

    set 23,2013 12:35:37 PM org.jdesktop.application.ResourceManager   getApplicationResourceMap Avvertenza:getApplicationResourceMap():没有   应用类集23,2013 12:35:38 PM   org.jdesktop.application.SingleFrameApplication initRootPaneContainer   Avvertenza:无法恢复会话[mainFrame.session.xml]   java.lang.NullPointerException at   org.jdesktop.application.LocalStorage.getApplicationId(LocalStorage.java:254)     在   org.jdesktop.application.LocalStorage.getDirectory(LocalStorage.java:274)     在   org.jdesktop.application.LocalStorage $ LocalFileIO.getFile(LocalStorage.java:450)     在   org.jdesktop.application.LocalStorage $ LocalFileIO.openInputFile(LocalStorage.java:417)     在   org.jdesktop.application.LocalStorage.openInputFile(LocalStorage.java:68)     在org.jdesktop.application.LocalStorage.load(LocalStorage.java:188)     在   org.jdesktop.application.SessionStorage.restore(SessionStorage.java:381)     在   org.jdesktop.application.SingleFrameApplication.initRootPaneContainer(SingleFrameApplication.java:210)     在   org.jdesktop.application.SingleFrameApplication.show(SingleFrameApplication.java:268)     在Main.main的Main.startup(Main.java:11)​​(Main.java:19)

    为什么呢?它究竟意味着什么?

    TNX

    安德烈

2 个答案:

答案 0 :(得分:3)

要创建并显示带有Hello World标签的窗口,您至少需要执行以下操作:

  • 实例化JFrame(link)。
  • 将JLabel添加到其中。
  • 显示框架。

关于如何制作框架的{oracle教程(link)向您展示了如何做到这一点。为了便于参考,我复制了定义/显示窗口的特定摘录。

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);

答案 1 :(得分:1)

您正在扩展SingleFrameApplication,这是一个为您执行UI设置和初始化的框架类,但您没有向其提供任何必要的配置信息。