Java 圈内标签
我想把文本(必须用HTML格式化,所以我不能在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
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);
}
在这种情况下,我也会考虑合成而不是继承。也许可以定义另一个由标签和带圆圈的面板组成的组件类 考虑将组件放在一个容器中。看看有什么想法
您可以考虑将标签放在自定义边框内。看看有什么想法。