LWUIT标签:创建自定义标签

时间:2012-04-10 16:27:41

标签: java java-me label paint lwuit

我正在尝试创建自定义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);
   }
}

我希望你能帮助我。

谢谢,

1 个答案:

答案 0 :(得分:4)

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

由于您希望您的绘图显示在顶部,您希望首先绘制标签,然后使用您的代码,以便paint方法中的第一行应为super.paint(g),这将解决这个问题。

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

说过我没有看到任何保证继承子类的东西。如果您只是想绘制徽标,为什么不创建一个在背景中具有对齐图像的样式与给定徽标。然后只是有条件地将正确的UIID分配给标签。