2011-09-11 22 views
0

円を描くJLabelが必要です。私はすでにいくつかのコードを持っていますが、サークルは描画しません、私はここで何か間違っていますか?円を描画するカスタムJLabel

public class TowerMarker extends JLabel 
{ 
    private int x, y, id; 
    private ImageIcon ic; 
    private String ql; 

    public TowerMarker(int id, int x, int y, ImageIcon ic, String ql) 
    { 
     this.x = x; 
     this.y = y; 
     this.ic = ic; 
     this.ql = ql; 
     setBounds(x, y, 40, 85); 
     setIcon(ic); 
     setToolTipText("QL: "+ql); 
     updateUI(); 

    } 

    @Override 
    public int getX() 
    { 
      return x; 
    } 

    @Override 
    public int getY() 
    { 
     return y; 
    } 

    public String getQL() 
    { 
     return ql; 
    } 

    public ImageIcon getImageIcon() 
    { 
     return ic; 
    } 

    public int getID() 
    { 
     return id; 
    } 

    @Override 
    public String toString() 
    { 
     return x+":"+y+":"+ql; 
    } 

    @Override 
    public void paintComponent(Graphics g) 
    { 
     g.setColor(Color.red); 

     g.drawOval(x, y, 20, 20); 

     ui.update(g, this); 
    } 
} 
+1

を使用しています。これは、AWTを使用しているときに実行される可能性のあるものですが、Swingでは必要ありません。問題を示す[SSCCE](http://sscce.org)を投稿してください。 – camickr

答えて

0

コールsuper.paintComponent(g);

@Override 
    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     g.setColor(Color.red); 

     g.drawOval(x, y, 20, 20); 

     ui.update(g, this); 
    } 

はなくpaintComponentのコード使用してアップデート(...)を取り除く

public void paint(Graphics g) 
+0

私は両方を試しましたが、JLabelマップに配置された後、ラベルの周りに何も表示されませんでした。 – Wesnc

+0

カスタムペイントは、paintComponent()メソッドをオーバーライドして行います。 – camickr