package com.test.swing;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
/**
* 这个是一个简单的扫雷例子,刚接触swing编写的,适合新手练习
* 该程序使用setBounds(x,y,w,h)对控件布局
* 做法参考win xp自带的扫雷,当然还写功能没做出来,
* 另外做出来的功能有些还存在bug
*
* @author Ping_QC
*/
public class Test extends JFrame implements ActionListener, Runnable,
MouseListener {
private static final long serialVersionUID = -2417758397965039613L;
private final int EMPTY = 0;
private final int MINE = 1;
private final int CHECKED = 2;
private final int MINE_COUNT = 10; // 雷的个数
private final int BUTTON_BORDER = 50; // 每个点的尺寸
private final int MINE_SIZE = 10; // 界面规格, 20x20
private final int START_X = 20; // 起始位置x
private final int START_Y = 50; // 起始位置y
private boolean flag;
private JButton[][] jb;
private JLabel jl;
private JLabel showTime;
private int[][] map;
/**
* 检测某点周围是否有雷,周围点的坐标可由该数组计算得到
*/
private int[][] mv = { { -1, 0 }, { -1, 1 }, { 0, 1 }, { 1, 1 }, { 1, 0 },
{ 1, -1 }, { 0, -1 }, { -1, -1 } };
/**
* 随机产生设定个数的雷
*/
public void makeMine() {
int i = 0, tx, ty;
for (; i
tx = (int) (Math.random() * MIN