我正在尝试创建自定义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);
}
}
我希望你能帮助我。
谢谢,
答案 0 :(得分:4)
您不应该使用UIManager.getInstance().getLookAndFeel().drawLabel(g, this);
由于您希望您的绘图显示在顶部,您希望首先绘制标签,然后使用您的代码,以便paint
方法中的第一行应为super.paint(g)
,这将解决这个问题。
你对drawImage的调用将它绘制在0,0,这总是错误的。您应该根据getX()
和getY()
定位绘图。
说过我没有看到任何保证继承子类的东西。如果您只是想绘制徽标,为什么不创建一个在背景中具有对齐图像的样式与给定徽标。然后只是有条件地将正确的UIID分配给标签。