我这个代码一运行左上角就画了个圈,我的目的是通过点击鼠标才画圈,怎么去掉这个错误啊?????package gobang;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Graphics;public class Chessman extends JFrame{
private static final long serialVersionUID = 4785452373598819719L;
public Chessman() { 
add(new DrawChessman());

public static void main(String[] args) { 
Chessman frame = new Chessman(); 
frame.setTitle("Chessman"); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setSize(800, 800); 
frame.setVisible(true); 
}
}class DrawChessman  extends JPanel {
private static final long serialVersionUID = 4785452373598819719L;
private int x, y; 
final int ChessSize = 30;

public void paintComponent(Graphics g) {
g.drawOval(x-ChessSize/2, y-ChessSize/2, ChessSize, ChessSize); 
}

public DrawChessman() { 
this.addMouseListener(new MouseAdapter() { 
public void mouseClicked(MouseEvent e) { 
x = e.getX(); 
y = e.getY(); 
repaint(); 

}); 


解决方案 »

  1.   

    设置个标志,初始为false,点击后设成true,paintComponent里判断标志
      

  2.   


     private static final long serialVersionUID = 4785452373598819719L;
        private int x, y; 
        final int ChessSize = 30;
        private boolean flag=false;    
        public void paintComponent(Graphics g) {
         if(flag)
            g.drawOval(x-ChessSize/2, y-ChessSize/2, ChessSize, ChessSize); 
        }
            
        public DrawChessman() { 
            this.addMouseListener(new MouseAdapter() { 
                public void mouseClicked(MouseEvent e) { 
                    x = e.getX(); 
                    y = e.getY(); 
                    flag=true;
                    repaint(); 
                } 
            }); 
        }