在 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 了解更多详情...