2012-12-10 21 views
-3

添加的JLabel到一個JFrame我有2個班,使用組件

我主要的類創建一個框架,我想另一個類將內容添加到它。一些閱讀arroudn告訴我,我應該使用組件來做到這一點,但是當我運行我的代碼框架是空的。

public static void main(String[] args) 
{ 
    // create frame 
    JFrame frame = new JFrame(); 
    final int FRAME_WIDTH = 800; 
    final int FRAME_HEIGHT = 600; 
    // set frame attributes 
    frame.setSize(FRAME_WIDTH, FRAME_HEIGHT); 
    frame.setTitle("My Frame"); 
    frame.setVisible(true); 

    Component1 Com = new Component1(); 
    Component add = frame.add(Com); 

} 

我的組件類創建一個JLabel

public class Component1 extends JComponent { 

    public void paintComponent() 
    { 
     JLabel label = new JLabel("<html>Some Text</html>"); 
    } 
} 

我沒有得到任何編譯錯誤,但是我沒有得到我的JFrame中的任何文字。

任何人都可以解釋我做錯了什麼?

克里斯

+0

我沒有看到JPanel – DrinkJavaCodeJava

+1

你在哪裏添加JLable? – Smit

+0

'公共類的Component1擴展JComponent的{ 公共無效paintComponent() { JLabel的標記=新的JLabel( 「某些文本」); } }改爲使用'JLabel'實例。在啓動時給它「」的文字。稍後設置文本,它將變爲可見。作爲一般技巧,不要在..中創建對象。我正要說'paintComponent(Graphics)',除了沒有一個。 –

回答

5

您需要添加JLabel。最好擴展JPanel而不是JComponent,因爲它有一個默認的layout manager,並且將使所有添加的組件出現而不需要設置組件大小。用於定製繪畫時使用paintComponent

public class Component1 extends JPanel { 

    Component1() { 
     JLabel label = new JLabel("<html>Some Text</html>"); 
     add(label); 
    } 
} 
4

無需創建新的Component。請致電frame.getContentPane().add(label)。在此之前初始化您的標籤。