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)中的输出直接显示&#34;。&#34;而不是&#34;&#34;,&#34;请等待。加载数据库...&#34;,然后&#34;。&#34;。请帮忙。我很感激你。
答案 0 :(得分:1)
首先阅读Concurrency in Swing。
Swing是一个单线程框架,这意味着阻止此线程的任何事情(如Thread.sleep
)都会阻止框架处理新事件(包括绘制请求)。
虽然有许多方法可以使这项工作,但最简单的可能是Swing javax.swing.Timer
。请查看How to use Swing Timers了解更多详情......