java在循环中设置JLabel中的文本
start = System.currentTimeMillis();
FileReader filereader1 = new FileReader("virus_database/point.dat");
JTextField jtextfield1 = new JTextField();
jtextfield1.read(filereader1, null);
point = Integer.parseInt(jtextfield1.getText());
filereader1.close();
scanFileName.setText("");
scanFileName.setText("Please wait. Loading Database...");
for(int i = 0; i < point && cmd != 1; i++)
{
FileReader filereader4 = new FileReader((new StringBuilder()).append("virus_database/malware").append(i).append(".res").toString());
JTextField jtextfield4 = new JTextField();
jtextfield4.read(filereader4, null);
database[i] = jtextfield4.getText();
filereader4.close();
int k6 = (i * 100) / point;
}
scanFileName.setText(".");
我仍然不明白为什么scanFileName(Jlabel)中的输出会直接显示“”不是“”,请稍候。正在加载数据库,然后“.”。请帮忙。我会感谢你的
# 1 楼答案
从读取Concurrency in Swing开始
Swing是一个单线程框架,这意味着任何阻塞该线程的东西(如
Thread.sleep
)都会阻止框架处理新事件(包括绘制请求)虽然有很多方法可以实现这一点,但最简单的方法可能是Swing
javax.swing.Timer
。查看How to use Swing Timers了解更多详细信息