2012-04-10 2 views
0

Я пытаюсь создать таможню Label. Я хочу сделать что-то вроде разметки на Image в зависимости от того, что вводит пользователь. Я действительно не знаю, как это сделать, но я надеюсь, что вы узнаете, чего я пытаюсь достичь здесь. Каков правильный способ получить класс Label? Это мой код.LWUIT Ярлык: создание пользовательской метки

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

Вы не должны использовать UIManager.getInstance().getLookAndFeel().drawLabel(g, this);

Так как вы хотите, чтобы ваш рисунок появится на верхней части вы хотите ярлык рисовать первый, а затем иметь свой код, чтобы в первой строке в методе paint должен super.paint(g), который позаботится об этом.

Ваш призыв drawImage рисует его на 0,0, что всегда неправильно. Вы должны расположить чертеж на основе getX() и getY().

Сказав, что я не вижу ничего, что требует подкласса. Если вы просто хотите нарисовать эмблему, почему бы не создать стиль, который имеет выровненное изображение в фоновом режиме с данной эмблемой. Затем просто условно назначьте правильный UIID метке.

Смежные вопросы