0

カスタムを作成しようとしていますLabelImage ユーザーが何を入力するかに応じて、マークアップのようなことをしたいと思います。私は本当にそれを行う方法を知りませんが、私がここで達成しようとしていることをあなたが知っていることを願っています。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 に答える