有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    从读取Concurrency in Swing开始

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

    虽然有很多方法可以实现这一点,但最简单的方法可能是Swing javax.swing.Timer。查看How to use Swing Timers了解更多详细信息