2011-07-20 26 views
4

塗料另一個組件我用SwingPaintDemo2從Java教程:中的paintComponent

http://download.oracle.com/javase/tutorial/uiswing/examples/painting/SwingPaintDemo2Project/src/painting/SwingPaintDemo2.java

我修改了它這樣的:

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 

    // Draw Text 
    g.drawString("This is my custom Panel!",10,20); 

    JLabel c = new JLabel("Label"); 
    c.paint(g); 
} 

g.drawString工作正常。但是,我怎樣才能從這種方法繪製JLabel?它不起作用。

回答

4

我認爲你必須爲你的標籤設置一個尺寸。

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 

    // Draw Text 
    g.drawString("This is my custom Panel!",10,20); 

    JLabel c = new JLabel("Label"); 
    c.setBounds(0, 0, 400, 30); 
    c.paint(g); 
} 
+0

你應該儘量避免重挫傳遞'Graphics'對象。相反,使用複製'Graphics gCopy = g.create()'。 – Moonbeam

+0

c.setBounds - 我甚至沒有想過。謝謝! – dmiandre

4

查看LabelRenderTest.java來源this thread。標籤最終被繪製到屏幕上,但在被顯示之前它被繪製到BufferedImage

來源的重要行是..

textLabel.setSize(textLabel.getPreferredSize()); 
+0

您的Examples&Html&Images在一起+1 – mKorbel

+0

@mKorbel'一張圖片描繪了千言萬語'(並得到了一些贊成票,通常:)。 HTML只是因爲我無法確定每個文本元素的確切位置。 ;) –

+0

我不能把你的個人攻擊視爲我的優秀,令人興奮的不可互換,無論......我的英語口語形式:-),當我閱讀你的一些編輯(或其他NativeSpeakers)時,必須笑死:-) – mKorbel

-1
JLabel label_name = new JLabel("Some text"); 

label_name.setBounds(position_x, position_y, width, height); 

label_name.setFont(new Font("Dialog", Font.PLAIN, 10)); 

add(label_name);