eclipse SWT插件写JAVA 窗口程序想实现一个按钮,一个文本框,点下按钮后文本框每毫秒自动加一在点按钮暂

停,再点清零。我是菜鸟很多不懂最好能给个代码实例。拜谢!... 停,再点清零。我是菜鸟 很多不懂最好能给个代码实例。拜谢! 展开
 我来答
noflawless
2013-02-07 · 超过10用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:13.9万
展开全部
给你一组代码,放在你本地可以直接运行,我已经调试过了,祝你好运
(PS:粘贴进来没有格式了,看着比较费劲,自己放在Eclipse里面格式化一下代码)

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Label;
public class Counter {
private Shell shell;
private Text text;
private Button button;
private boolean isRunning = false; //记录当前是否正在计数
private long interval = 100; //间隔时间,这里表示0.1秒
public static void main(String[] args) {
try {
Counter window = new Counter();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 打开运行窗口
*/
public void open() {
Display display = Display.getDefault();
createContents();
registerListener();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
/**
* 创建窗口内容
*/
private void createContents() {
shell = new Shell();
shell.setSize(282, 121);
shell.setText("计数器");
shell.setLayout(new FillLayout(SWT.HORIZONTAL));
Composite composite = new Composite(shell, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
Label label = new Label(composite, SWT.NONE);
label.setText("计数器:");
text = new Text(composite, SWT.BORDER | SWT.READ_ONLY);
text.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false, 1, 1));
button = new Button(composite, SWT.NONE);
button.setLayoutData(new GridData(SWT.CENTER, SWT.BOTTOM, true, true, 1, 1));
button.setText("开始");
}
/**
* 为按钮注册侦听
*/
private void registerListener() {
button.addMouseListener(new MouseAdapter() {
public void mouseUp(MouseEvent e) {
isRunning = !isRunning;
if(isRunning) {
startCount();
shell.getDisplay().asyncExec(new Runnable() {
public void run() {
button.setText("暂停");
}
});
} else {
shell.getDisplay().asyncExec(new Runnable() {
public void run() {
text.setText("0");
button.setText("开始");
}
});
}
}
});
}
/**
* 启动计数线程
*/
private void startCount() {
Thread thread = new Thread(new Runnable() {
public void run() {
int num = 0;
while(isRunning) {
num ++;
final int val = num;
shell.getDisplay().asyncExec(new Runnable() { //启动UI线程,刷新数据
public void run() {
text.setText(val+"");
}
});
try {
Thread.sleep(interval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();
}
}
yujingtaojing
2013-02-07 · TA获得超过467个赞
知道小有建树答主
回答量:1108
采纳率:0%
帮助的人:490万
展开全部
分太少,懒得写
追问
我家底就这么多啊  。。。。帮个忙呗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式