想实现在一个10X10的格子空间中,鼠标点击一格在该格子填充一格圆圈。下面代码测试时偶尔有点击了但没画上得情况!不知何故?求解!
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.JFrame;
import javax.swing.JPanel;
public class FullScreen extends JFrame implements MouseListener{
public static int WIDTH;  
public static int HEIGHT;
private static int nx;    //棋盘坐标
private static int ny;
public FullScreen(){

JPanel panel = new JPanel();
this.setLocation(0, 0);
WIDTH=(int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
HEIGHT=(int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
        this.setSize(WIDTH,HEIGHT);
        this.repaint();
        
        this.setUndecorated(true);
        this.setVisible(true);
        this.addMouseListener(this);
        
}
public void paint(Graphics g){  
        int n=1;
        while(n<11)
        {
         g.drawLine( n*WIDTH/11,0, n*WIDTH/11, 1024);
         g.drawLine(0, n*HEIGHT/11, 1280, n*HEIGHT/11);
         n++;
        }
}  public static void main(String[] args) {
        FullScreen frm = new FullScreen();
       
    }
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub nx=e.getX()/116;
ny=e.getY()/93;
e.getComponent().repaint();
Graphics g = e.getComponent().getGraphics();
g.fillOval(nx*116, ny*93, 116, 93); }
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub

}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub

}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}
}

解决方案 »

  1.   

    把 
    public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stubnx=e.getX()/116;
    ny=e.getY()/93;
    e.getComponent().repaint();
    Graphics g = e.getComponent().getGraphics();
    g.fillOval(nx*116, ny*93, 116, 93);}里面的代码全部剪切到 
    public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub}
    里面去试试mouseClicked 是个垃圾方法,我从来不用
    它要求鼠标在同一个像素点上按下并弹起后才触发
    其中鼠标不能发生一点点的位移,
    手抖一下就没有 mouseClicked 了