想实现在一个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
}
}
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
}
}
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 了