Java 圈内标签

Java 圈内标签,java,swing,jlabel,paintcomponent,drawstring,Java,Swing,Jlabel,Paintcomponent,Drawstring,我想把文本(必须用HTML格式化,所以我不能在PaintComponent中使用drawString)放在圆圈内。问题是“paintComponent”在绘制标签之后被调用,所以它覆盖了我的文本 如何在开始时画椭圆形,然后再画我的线 class Circle extends JLabel { public Circle(String string) { super(string); } @Override public void pain

我想把文本(必须用HTML格式化,所以我不能在
PaintComponent
中使用
drawString
)放在圆圈内。问题是“
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); 
    }
 }

我会尝试使用
setComponentZOrder()
将标签顺序设置为高于圆圈

最快的解决方案可能是将
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);
}

在这种情况下,我也会考虑合成而不是继承。也许可以定义另一个由标签和带圆圈的面板组成的组件类

考虑将组件放在一个容器中。看看有什么想法


您可以考虑将标签放在自定义边框内。看看有什么想法。