在循环中设置JLabel中的文本

时间:2015-03-05 06:48:00

标签: java swing user-interface 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)中的输出直接显示&#34;。&#34;而不是&#34;&#34;,&#34;请等待。加载数据库...&#34;,然后&#34;。&#34;。请帮忙。我很感激你。

1 个答案:

答案 0 :(得分:1)

首先阅读Concurrency in Swing

Swing是一个单线程框架,这意味着阻止此线程的任何事情(如Thread.sleep)都会阻止框架处理新事件(包括绘制请求)。

虽然有许多方法可以使这项工作,但最简单的可能是Swing javax.swing.Timer。请查看How to use Swing Timers了解更多详情......