微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2SE >

这个程序为什么只能显示一个棋子?

时间:2014-04-10 09:49  浏览:努力统计中...
我想画个五子棋盘,用鼠标点击显示棋子,结果只能显示一颗棋子。第二次点击上一颗棋子又没了。 不明白错在哪里。该如何修改代码呢?! importjava.awt.Color; importjava.awt.Graphics; import
我想画个五子棋盘,用鼠标点击显示棋子,结果只能显示一颗棋子。第二次点击上一颗棋子又没了。
不明白错在哪里。该如何修改代码呢?!


import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;

public class Qipan extends JFrame {
 private int X, Y;             // x,y坐标
 final int WIDTH = 900, HEIGHT = 800;       //定义全局变量
 int x=50,y=50,L=40,N=15;     //i和j表示坐标,L表示长度,N表示规格 
 boolean isVisible = false;    //控制显示
 
 public Qipan() {
  super("超神锐");          //请叫我超神锐
  addHandler();
  setSize(WIDTH, HEIGHT);                   //设置大小
  setVisible(true);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 }


 private void addHandler() {
  addMouseListener(new MouseAdapter() {
   public void mouseClicked(MouseEvent e) {
    // 左键
    if (e.getButton() == MouseEvent.BUTTON1) {
     X = e.getX();        //取得鼠标的位置坐标
     Y = e.getY();
     isVisible = true;
     repaint();
    } 
      else if (e.getButton() == MouseEvent.BUTTON3) {  // 右键取消圆圈
        isVisible = false;
        repaint();
       }
  }

  });            //内部类。
 }
 
 public void paint(Graphics g) {
  super.paint(g);
  g.setColor(Color.BLUE);
  for(int j=50;j<=y+L*(N-1);j=j+L)  
   g.drawLine(x, j, x+L*(N-1), j);      //画横线
 for(int i=50;i<=x+L*(N-1);i=i+L)   
      g.drawLine(i, y, i, y+L*(N-1));   //画竖线
 for(int i=x,k=1;i<=x+L*(N-1);i=i+L,k++) {
  String k2=k+ " 囧";                 //数字转化为字符串以便显示在棋盘正下方
  g.drawString(k2, i-5,y+L*N+5 );         //调整好位置。
 }
 for(int j=y,k=1;j<=y+L*(N-1);j=j+L,k++) {
  String k2=k+"  杀";                 //棋盘右方的数字
  g.drawString(k2, x+L*N-5, j);
   } 
  if(isVisible){                         //检验鼠标是否点击!
   g.setColor(Color.BLACK);
   g.drawOval(X-15, Y-15, 30, 30);         //画圆。为什么鼠标的坐标和圆心坐标不一致呢??坐标原点不同?
   g.fillOval(X-15,Y-15,30,30);            //填充颜色
  }
 }

 public static void main(String[] args) {
  new Qipan();            //主程序。
 }
 
}


貌似是循环的问题,你看看;

    if (e.getButton() == MouseEvent.BUTTON1) {
     X = e.getX();        //取得鼠标的位置坐标
     Y = e.getY();
     isVisible = true;
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线------