java - 圆圈内的标签

标签 java swing jlabel paintcomponent drawstring

我想将文本(必须采用 HTML 格式,因此无法在 PaintComponent 中使用 drawString)放入 Circle 内。问题是“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); 
    }
 }

最佳答案

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

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

关于java - 圆圈内的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16980095/

相关文章:

java - java中的HTML类型元素符号

java - 使用update时Jlabel文本相乘和重叠(图形)

java - JLabel 或 JPanel 的 createTransferable 不会触发

java - Java 数组是同构的,而 ArrayList 不是,这是什么意思?

java - 如何对长号码运行查询

java - 更改菜单栏和菜单项字体

java - 将 JLabel 中的文本右对齐

java - 同时查看当前时间

java - 当alpha已满时,ARGB和ARGB_PRE是否相同?

java - jar 使用的资源