0

Circle の中にテキスト ( HTML でフォーマットする必要があるためdrawString、 inは使用できません) を入れたいです。PaintComponent問題は、paintComponentラベルを描画した後に " " が呼び出されるため、テキストが隠れてしまうことです。

最初に楕円形を描き、次に文字列を描く方法は?

class Circle extends JLabel 
{

         public Circle(String string) {         super(string);  }
     @Override
    public void paintComponent( Graphics g )
    {
        super.paintComponent(g);
        g.setColor(Color.yellow);
        g.fillOval(0,0, 70, 70);
        g.setColor(Color.blue);
       g.drawOval(0,0, 70, 70); 
    }
 }
4

3 に答える 3

1

カスタム枠内にコンポーネントを配置することを検討してください。TextBubbleBorderアイデアについては、 を参照してください。

于 2013-06-07T18:51:20.127 に答える
1

おそらく最も簡単な解決策は、に変更するpaintComponentことです

public void paintComponent( Graphics g )
{
  g.setColor(Color.yellow);
  g.fillOval(0,0, 70, 70);
  g.setColor(Color.blue);
  g.drawOval(0,0, 70, 70); 
  super.paintComponent(g);
}

ただし、この場合、継承ではなく合成も検討します。おそらく、ラベルと円の付いたパネルで構成される別のコンポーネント クラスを定義します。

于 2013-06-07T09:16:02.963 に答える
0

setComponentZOrder()ラベルの順序を円よりも上に設定するために使用してみます。

于 2013-06-07T09:09:26.027 に答える