2012-04-10 5 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になりますが、これは常に間違っています。 getX()getY()に基づいて図面を配置する必要があります。

私はサブクラス化を保証するものは何も見ていないと言われています。エンブレムを描きたいのであれば、そのエンブレムの背景にアラインしたイメージを持つスタイルを作成してみましょう。次に、ラベルに適切なUIIDを条件付きで割り当てます。

関連する問題