2013-09-23 50 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設置和初始化你的框架類,但你不給它提供任何必要的配置信息。