在 JLabel 中循环设置文本
Setting text in JLabel in a loop
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)中的输出直接显示"."而不是“”,"Please Wait. Loading Database...",然后是“.”。请帮忙。我会很感激你。
首先通读 Concurrency in Swing。
Swing 是一个单线程框架,这意味着任何阻塞此线程的东西(如 Thread.sleep
)都会阻止框架处理新事件(包括绘制请求)。
虽然可以通过多种方式完成这项工作,但最简单的可能是 Swing javax.swing.Timer
。查看 How to use Swing Timers 了解更多详情...
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)中的输出直接显示"."而不是“”,"Please Wait. Loading Database...",然后是“.”。请帮忙。我会很感激你。
首先通读 Concurrency in Swing。
Swing 是一个单线程框架,这意味着任何阻塞此线程的东西(如 Thread.sleep
)都会阻止框架处理新事件(包括绘制请求)。
虽然可以通过多种方式完成这项工作,但最简单的可能是 Swing javax.swing.Timer
。查看 How to use Swing Timers 了解更多详情...