我有一个推理过程,这个过程中间会有结果要输出。因为推理过程很快,所以结果输出也很快。
现在的问题是我想放慢一点,让用户能够很清楚地看到推理过程。如果用控制台程序的话,比较好办
void reasoning()
{
推理步骤1;
输出结果1;
sleep(1000);//休息一秒钟
推理步骤2;
输出结果2;
sleep(1000);
}
用上面的程序后,控制台就会每隔一秒钟打印一行数据出来。现在我是要在图形界面上显示,也是reasoning,然后中间用sleep(1000),结果显示在某个textarea里面,或者用改变button的颜色来显示。这个时候,就无法出现慢动作的效果。开始没有显示,最后一下子把所有的结果同时显示出来。
我考虑过用timer,但是我的推理过程是一个递归的推理过程,很难嵌到timer事件里面去。
请问,如何能够实现这样的慢动作效果?我在VC里面也用试过,希望能够在一个textarea里面每隔一秒钟输出一个结果,也是希望用sleep 实现,但是也没有成功。麻烦大虾们给个解决方案。
现在的问题是我想放慢一点,让用户能够很清楚地看到推理过程。如果用控制台程序的话,比较好办
void reasoning()
{
推理步骤1;
输出结果1;
sleep(1000);//休息一秒钟
推理步骤2;
输出结果2;
sleep(1000);
}
用上面的程序后,控制台就会每隔一秒钟打印一行数据出来。现在我是要在图形界面上显示,也是reasoning,然后中间用sleep(1000),结果显示在某个textarea里面,或者用改变button的颜色来显示。这个时候,就无法出现慢动作的效果。开始没有显示,最后一下子把所有的结果同时显示出来。
我考虑过用timer,但是我的推理过程是一个递归的推理过程,很难嵌到timer事件里面去。
请问,如何能够实现这样的慢动作效果?我在VC里面也用试过,希望能够在一个textarea里面每隔一秒钟输出一个结果,也是希望用sleep 实现,但是也没有成功。麻烦大虾们给个解决方案。
解决方案 »
- 有个算法的问题请教大家~~谢啦!
- new Socket时出现的java.net.connectException:connection refused:connect
- 请教一个如何在hashmap中查找以特定字符串开头的键值!
- 请问这个循环如何做.谢谢各位
- 求个管理指针的问题(新人)
- 请大家公同抵制日货,学习韩国人民!
- java里有什么规范 jsp里有什么规范
- 在线求解:java 事件类ActionEvent 应用
- 急!急!数据库字段名称中有特殊符号(/,(),空格,:)在访问数据库时应该是如何处理
- 大家一般用java做那些方面的东西呢?
- 你工作时间几小时?
- 怎样实现在JTable中选中一行后,点上下移动按钮实现移动?
setTimeout(fun1,1000)fun1(){
//handle result
}
import javax.swing.JScrollPane;
import javax.swing.JTextArea;public class T {
public static void main(String[] args) {
JTextArea textArea = new JTextArea();
JScrollPane sp = new JScrollPane(textArea); JFrame f = new JFrame();
f.getContentPane().add(sp, BorderLayout.CENTER);
f.setSize(300, 300);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
new PrimeNumerThread(textArea).start();
}
}class PrimeNumerThread extends Thread { private JTextArea textArea; public PrimeNumerThread(JTextArea textArea) {
this.textArea = textArea;
}
public void run() {
for (int i = 3; i < 1000; i += 2) {
boolean f = true;
for (int k = 2; k < i / 2; k++) {
if (i % k == 0) {
f = false;
break;
}
}
if (f) {
textArea.append(i + "\n");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}
}
}