package com.huan.mine;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import java.util.Timer;
import java.util.TimerTask;
public class AppMine {
private int showMineLength = (Constant.length + Constant.EDGE)
* Constant.row + Constant.SPACING * 2;
private int shellWidth = showMineLength + Constant.WIDTH;
private int shellHeight = showMineLength + Constant.HEIGHT;
/**
* Launch the application
*
* @param args
*/
public static void main(String[] args) {
try {
AppMine window = new AppMine();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Open the window
*/
public void open() {
final Display display = Display.getDefault();
final Shell shell = new Shell(SWT.MIN | SWT.CLOSE);
shell.setLayout(new GridLayout());
shell.setSize(shellWidth, shellHeight);
shell.setText("扫雷");
shell.open();
// 菜单板块 BEGIN
final Menu menu = new Menu(shell, SWT.BAR);
shell.setMenuBar(menu);
final MenuItem menuItem = new MenuItem(menu, SWT.CASCADE);
menuItem.setText("游戏(&G)");
final Menu menu_1 = new Menu(menuItem);
menuItem.setMenu(menu_1);
final MenuItem menuItem_2 = new MenuItem(menu_1, SWT.NONE);
menuItem_2.setText("开始(&S)");
new MenuItem(menu_1, SWT.SEPARATOR);
final MenuItem checkboxMenuItem = new MenuItem(menu_1, SWT.CHECK);
checkboxMenuItem.setText("初级(&L)");
final MenuItem checkboxMenuItem_1 = new MenuItem(menu_1, SWT.CHECK);
checkboxMenuItem_1.setText("中级(&M)");
final MenuItem checkboxMenuItem_2 = new MenuItem(menu_1, SWT.CHECK);
checkboxMenuItem_2.setText("高级(&H)");
final MenuItem checkboxMenuItem_3 = new MenuItem(menu_1, SWT.CHECK);
checkboxMenuItem_3.setText("自定义…(&Z)");
new MenuItem(menu_1, SWT.SEPARATOR);
final MenuItem menuItem_3 = new MenuItem(menu_1, SWT.NONE);
menuItem_3.setText("退出(&Q)");
final MenuItem menuItem_1 = new MenuItem(menu, SWT.CASCADE);
menuItem_1.setText("帮助(&H)");
final Menu menu_2 = new Menu(menuItem_1);
menuItem_1.setMenu(menu_2);
final MenuItem menuItem_4 = new MenuItem(menu_2, SWT.NONE);
menuItem_4.setText("使用帮助(&U)");
new MenuItem(menu_2, SWT.SEPARATOR);
final MenuItem menuItem_5 = new MenuItem(menu_2, SWT.NONE);
menuItem_5.setText("关于扫雷(&A)");
// 菜单板块 END
// 计数板块 BENGIN
// Composite showNum = new Composite(shell, SWT.BORDER);
// showNum.setLayoutData(new GridData(GridData.FILL_BOTH));
// showNum.setLayout(new GridLayout(5, false));
//
// Label mineLabel = new Label(showNum, SWT.NONE);
// mineLabel.setText(" " + new Integer(Constant.row).toString() + "
// ");// 雷的个数
//
// new Label(showNum, SWT.NONE).setLayoutData(new GridData(
// GridData.FILL_HORIZONTAL));
//
// Button button = new Button(showNum, SWT.NONE);
// button.setText("开始");
//
// new Label(showNum, SWT.NONE).setLayoutData(new GridData(
// GridData.FILL_HORIZONTAL));
//
// Label timeLabel = new Label(showNum, SWT.BORDER);
class MyTimer implements Runnable {
private int second = 0;
private int minute = 0;
private Timer timer;
private String time = null;
private String stemp = null;
private String mtemp = null;
public TimerTask
task = new TimerTask() {
public void run() {
second++;
second = second % 60;
minute = second / 60;
if (second >= 10)
stemp = new Integer(second).toString();
else
stemp = "0" + new Integer(second).toString();
if (minute >= 10)
mtemp = new Integer(minute).toString();
else
mtemp = "0" + new Integer(minute).toString();
time = mtemp + ":" + stemp;
}
};
public void run() {
timer = new Timer();
timer.schedule(task, 0, 1000);
Composite showNum = new Composite(shell, SWT.BORDER);
showNum.setLayoutData(new GridData(GridData.FILL_BOTH));
showNum.setLayout(new GridLayout(5, false));
Label mineLabel = new Label(showNum, SWT.NONE);
mineLabel.setText(" " + new Integer(Constant.row).toString()
+ " ");// 雷的个数
new Label(showNum, SWT.NONE).setLayoutData(new GridData(
GridData.FILL_HORIZONTAL));
Button button = new Button(showNum, SWT.NONE);
button.setText("开始");
new Label(showNum, SWT.NONE).setLayoutData(new GridData(
GridData.FILL_HORIZONTAL));
Label timeLabel = new Label(showNum, SWT.BORDER);
timeLabel.setText(time);
System.out.println(time);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Display.getCurrent().syncExec(new MyTimer());
// timeLabel.setText(" ");
// MyTimer.show(timeLabel);// 耗时
// /
// 计数板块 END
// 雷区板块 BENGIN
// 雷区面板布置
Composite showMine = new Composite(shell, SWT.BORDER);
showMine.setLayoutData(new GridData(showMineLength, showMineLength));
showMine.setBackground(Constant.COLOR);
final GridLayout gridLayout = new GridLayout(Constant.row, true);
gridLayout.verticalSpacing = 2;
gridLayout.horizontalSpacing = 2;
showMine.setLayout(gridLayout);
// 布雷
Label[][] mineLabels = new Label[Constant.row][Constant.row];
Mine[][] mines = new Mine[Constant.row][Constant.row];
int i, j;
for (i = 0; i < Constant.row; i++) {
for (j = 0; j < Constant.row; j++) {
mineLabels[j] = new Label(showMine, SWT.NONE);
mineLabels[j].setLayoutData(new GridData(Constant.length,
Constant.length));
mines[j] = new Mine();
}
}
// 雷区板块 END
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}