2013-09-23 116 views
1

我有这个简单的Main类,它使用swing来显示Hello World标签,但是我对此代码有一些疑问,因为这是我第一次在Java中创建GUI:关于Java SWING和Swing应用框架的一些疑问

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()方法是一个纯粹的摇摆方法只需创建一个文本标签显示Hello World消息。这个代码也使用startup()方法,据我所知,它是属于所谓的Swing应用程序框架的** SingleFrameApplication类的方法......但是......究竟是什么Swing应用程序框架?它是来自Swing的单独项目吗?什么给我?

  2. 当我运行的应用程序作为一个典型的Java应用程序的Hello World消息显示,但也出现了我在Eclipse控制台以下错误信息:

设置23,2013 12: 35:37 PM org.jdesktop.application.ResourceManager getApplicationResourceMap Avvertenza:getApplicationResourceMap():无 应用类设置23,2013下午12时35分38秒 org.jdesktop.application.SingleFrameApplication initRootPaneContainer Avvertenza:无法恢复会话[mainFrame.sessio n.xml] 显示java.lang.NullPointerException在 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) at org.jdesktop.application.LocalStorage.load(LocalStorage.java:188) at org.jdesktop.application.SessionStorage.restore(SessionStor age.java:381) 在 org.jdesktop.application.SingleFrameApplication.initRootPaneContainer(SingleFrameApplication.java:210) 在 org.jdesktop.application.SingleFrameApplication.show(SingleFrameApplication.java:268) 在Main.startup( Main.java:11)​​Main.main(Main.java:19)

为什么?究竟是什么意思?

TNX

安德烈

+1

你会需要扩展JFrame的东西,在那里你可以放置JLabel – mKorbel

回答

3

要创建和显示一个Hello World标签的窗口,你需要做的在最小以下内容:

  • 实例化一个JFrame(link)。
  • 将您的JLabel添加到它。
  • 显示框架。

如何使帧(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

你延长SingleFrameApplication,这是执行UI设置和初始化你的框架类,但你不给它提供任何必要的配置信息。