2015-03-05 2 views
0
   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) прямо показывает «.». вместо «", «Подождите, загрузка базы данных ...», а затем «.». Пожалуйста помоги. Я был бы вам признателен.Настройка текста в JLabel в цикле

+0

Думаю, вам нужно показать больше кода. Пожалуйста, создайте минимальный, полный и проверяемый пример (http://stackoverflow.com/help/mcve). – dbank

ответ

1

Начните с чтения Concurrency in Swing.

Swing - это однопоточный фреймворк, это означает, что все, что блокирует этот поток (например, Thread.sleep), предотвратит обработку фреймов новыми событиями (включая запросы на рисование).

Несмотря на то, что вы можете сделать эту работу, возможно, самым простым является Swing javax.swing.Timer. Взгляните на How to use Swing Timers для получения более подробной информации ...

+0

Спасибо :) Проблема теперь совершенно другая. –

+0

Я отредактировал вопрос. Пожалуйста, ответьте на него. –

+0

См. [Concurrency in Swing] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/) и [Рабочие потоки и SwingWorker] (http://docs.oracle.com/javase/tutorial/uiswing /concurrency/worker.html) – MadProgrammer

Смежные вопросы