java 动态计时_swt 动态计时器

该博客详细介绍了如何使用Eclipse SWT库创建一个扫雷游戏应用。内容包括设置窗口大小和菜单,创建游戏选项如开始、难度选择以及计时器功能。此外,还涉及到了布局管理和计时器的实现,以及雷区的初始化和界面展示。
摘要由CSDN通过智能技术生成

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();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值