一个SWING的怪问题

我最近在做学校里一个关于操作系统的实验,主要实现进程调度的算法,但要求是可视化,即动态地表现出进程的变化情况.这就牵涉到了界面的动态变化,比如JLabel上的文字要不断变化,由于我对SWING不熟悉所以碰到了一个大问题,如下.
比如我有一个Button被监听,一旦按下便动态地不断改变JLable上的文字.
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
while(条件){
slow();//减慢程序速度,容易看出动态的变化

label.setText("不同内容");//每次显示的内容不一样
}

}
}
}
但很不幸出现了问题,label上只显示循环最后一次出现的文字,事先声明我加入了slow()方法来减慢变化速度,所以不存在由于变化过快无法看清的理由.查了点SWING的原理,发现SWING的组件是"画"上去的,并不是像AWT那样"粘"上去的,便听了很多网友的告戒使用了很多重绘的方法,但还是不行.
此时有一件事让我很在意,即其实label上的字只变化了一次,那便是循环的最后一次.我做了另一个实验:
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){

slow();//减慢程序速度,容易看出动态的变化

label.setText("内容1");
slow();
label.setText("内容2");

}
}
}
结果是label上只显示了内容2,内容1并没有显示.   这个时候我猜测了这样一种可能:每次事件的触发,只能改变
SWING一次,由于时间不多,我也无法求证,但总得解决这个问题.所以我准备迂回这个问题.
我的做法是不断触发事件,来模拟一个事件中的循环.
具体方法如下: 初始化一个SWING定时器, Timer time=new Timer(10,listener);  规定其每10秒执行一次,并把
事件交给listener监听,一旦Button被按下,变让time.start();     然后time类便会每过10秒便会触发事件,事件处理
里写的就是label.setText("不同内容");  从而达到了目的.
虽然我这样并不高效,但毕竟解决了问题,以后再慢慢研究swing了.:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值