Chinaunix
标题:
关于swing事件的一个问题
[打印本页]
作者:
ant
时间:
2006-02-22 18:11
标题:
关于swing事件的一个问题
JProcessbar pb = new JPorcessbar
jButton1.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
process();
});
我在process()里面增加pb.setValue();怎样实时反应到界面上?
现在是事件调用完毕之后才画到界面上。
作者:
kakasi
时间:
2006-02-22 18:47
那是因为这两个动作都排在ui线程中了,当然要顺序执行。
解决办法就是 : process()在新线程中执行。并且用timer定时刷ui
作者:
ant
时间:
2006-02-22 18:52
能不能给个例子,java刚上手做
作者:
kakasi
时间:
2006-02-22 19:05
new Timer(1000, new ActionListener())
{
public void actionPerformed(ActionEvent evt)
{
refresh progressbar
}
}.start();
new Thread()
{
public void run
{
process()
}
}.start()
作者:
ant
时间:
2006-02-22 19:41
那我只有process()里面才知道真正的进度情况,怎样传给processbar显示正确的进度?
作者:
kakasi
时间:
2006-02-23 09:25
process()
{
for(i)
{
this.progressBar.setValue(i);
}
}
作者:
ant
时间:
2006-02-23 09:34
多谢,还有一个问题啊,就是process()这个线程启动是i在我点击的事件里面产生的,那我怎样知道我的process什么时候结束呢?然后停止计时器。
作者:
kakasi
时间:
2006-02-23 09:45
最好是传给timer一个回调,在timer的actionPerformed中判断process是否结束
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2