2011-07-20 2 views
4

内の別のコンポーネントペイント:は、私は、JavaチュートリアルからSwingPaintDemo2を使用paintComponent

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が正常に動作します:

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

を私はこのようにそれを修正しました。しかし、このメソッドから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

this threadLabelRenderTest.javaを参照してください。ラベルは最終的に画面に描画されますが、表示される前にBufferedImageにペイントされます。

ソースの重要な行は..です

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

あなたの例とHtmlとImagesは一緒に+1 – mKorbel

+0

@mKorbel 'イメージは1000語を塗りつぶします。 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); 
関連する問題