我想在Circle中放置文字(必须使用HTML进行格式化,因此我无法在drawString
中使用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);
}
}
答案 0 :(得分: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);
}
然而,在这种情况下,我也会考虑构成而不是继承。也许定义由标签和带圆圈的面板组成的另一个组件类。
答案 1 :(得分:1)
考虑将组件放在custom border内。有关提示,请参阅TextBubbleBorder
。
答案 2 :(得分:0)
我会尝试使用setComponentZOrder()
将标签顺序设置为高于圆圈。