0

我正在尝试创建一个自定义Label. 我想Image 根据用户输入的内容做一些类似标记的事情。我真的不知道该怎么做,但我希望你能知道我在这里想要达到的目标。派生Label类的正确方法是什么?这是我的代码。

class CustomLabel extends Label
{
   List paths;
   Image image;
   public CustomLabel(Image img,List paths)
   {
     this.image = img;
     this.paths = paths;
   }

   public void paint(Graphics g)
   {
     g.setColor(0x000000);
     for (int i = 0; i < paths.size(); i++) 
     {
        Path path = (Path)paths.getModel().getItemAt(i);
        int firstLocX = path.discoveredNode.getX();
        int firstLocY = path.discoveredNode.getY();
        int secondLocX = path.nodeDiscovered.getX();
        int secondLocY = path.nodeDiscovered.getY();
        g.drawLine(firstLocX, firstLocY, secondLocX, secondLocY);
     }
     g.drawImage(image, 0, 0);
     UIManager.getInstance().getLookAndFeel().drawLabel(g, this);
   }
}

我希望你能帮我解决这个问题。

谢谢,

4

1 回答 1

4

你不应该使用UIManager.getInstance().getLookAndFeel().drawLabel(g, this);

由于您希望您的绘图出现在顶部,因此您希望先绘制标签,然后再使用您的代码,因此paint方法中的第一行应该是super.paint(g)负责处理的。

您对 drawImage 的调用将其绘制在 0,0 处,这总是错误的。您应该根据getX()和定位绘图getY()

话虽如此,我没有看到任何需要子类化的东西。如果您只是想绘制一个标志,为什么不创建一个在其背景中具有与给定标志对齐的图像的样式。然后只需有条件地将正确的 UIID 分配给标签。

于 2012-04-12T04:36:18.243 回答