我用java写了个连连看,其他部分都完成了,就是在显示连线时有问题,我希望的处理过程是这样的:
1、判断用户选中的两个方块(实际上是两个JButton)能否消除
2、如果能消除的话,显示这两个JButton之间的连线(我用的是图片),连线显示500毫秒。
3、500毫秒之后,连线自动消失,那两个方块也随之消失(就是把背景色变成底色)。
整个过程我是放在mouseClicked事件中的,必要代码如下:// 如果能消除的话
if (isClearable) {
// 显示连线
displayTracks();
Thread.sleep(500);
// 清除连线
clearTracks();
// 清除方块
clear();
}/**
* 显示连线轨迹
*/
private void displayTracks() {
……
button.setIcon(new ImageIcon(image));
button.updateUI();
}
现在情况是,执行到Thread.sleep(500)语句时,并没有即时显示连线,而是暂停之后直接就清除了,所以看不到。怎样才能做到在暂停之前就显示连线?我在网上也查了不少资料,updateUI()、repaint()、panel.revalidate()、invalidate()之后再validate()……这些方法都试过了,就是做不到实时刷新,我实在是没辙了,请各位帮帮我吧,给个大致的思路就行。我在工作中主要是做j2ee,Swing开发还是第一次。
1、判断用户选中的两个方块(实际上是两个JButton)能否消除
2、如果能消除的话,显示这两个JButton之间的连线(我用的是图片),连线显示500毫秒。
3、500毫秒之后,连线自动消失,那两个方块也随之消失(就是把背景色变成底色)。
整个过程我是放在mouseClicked事件中的,必要代码如下:// 如果能消除的话
if (isClearable) {
// 显示连线
displayTracks();
Thread.sleep(500);
// 清除连线
clearTracks();
// 清除方块
clear();
}/**
* 显示连线轨迹
*/
private void displayTracks() {
……
button.setIcon(new ImageIcon(image));
button.updateUI();
}
现在情况是,执行到Thread.sleep(500)语句时,并没有即时显示连线,而是暂停之后直接就清除了,所以看不到。怎样才能做到在暂停之前就显示连线?我在网上也查了不少资料,updateUI()、repaint()、panel.revalidate()、invalidate()之后再validate()……这些方法都试过了,就是做不到实时刷新,我实在是没辙了,请各位帮帮我吧,给个大致的思路就行。我在工作中主要是做j2ee,Swing开发还是第一次。
解决方案 »
- Eclipse的3大GUI开发插件
- 有没有能入门的Java语言的书籍,帮忙推荐一下吧~~~
- 问个求和,求完数的题
- 关于页面的问题!
- 如何判断鼠标左键弹起的事件
- java中向方法传值时,传对象引用和传基本变量之间的差异是什么?
- 输入流对象中的mark()方法的参数有何作用?
- 求8位色转24位色算法(大家一起分享)
- 一个程序放到jbpersonal中和放到jbenprise中不一样么?为什么在jbP中编译执行成功,而在jbe中找不到类?
- 关于创建一临时文件后删除的问题(deteleOnExit()何时起作用)
- 用httpclient模拟登陆网站地问题啊!
- 本人想做一个网络爬虫程序 急需sosoo-core.jar哪位兄弟给一个
显示连线的方法放在MousePress事件里,Thread.sleep(500);和清除连线的方法放在MouseRelease事件里就可以了。