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