2011-09-11 167 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