2016-01-22 2 views
0

Я создал программу, которая открывает базу данных и делает обновление, как это обновление очень длинное. Я попытался создать новый фрейм, в котором пользователь мог видеть состояние обновления.Кадр не отображается правильно

Проблема заключается в следующем: Когда я запускаю новую тему, структура окна создается, но ничего не отображается. По завершении обновления оконное окно завершает загрузку всего содержимого.

Что я делаю неправильно?

public class finestra extends Thread{ 
    @Override 
    public void run(){ 
     label1.setText(getMissatge1()); 
     label1.setHorizontalAlignment(JLabel.CENTER); 
     label2.setText(getMissatge2()); 
     label2.setHorizontalAlignment(JLabel.CENTER); 
     label3.setHorizontalAlignment(JLabel.RIGHT); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     frame.setLayout(new GridLayout(0,1)); 
     frame.setSize(300, 100); 
     frame.add(label1); 
     frame.add(label2); 
     frame.add(label3); 
     //frame.pack(); 
     frame.setVisible(true); 
     int temps = 0; 
     boolean ok = false; 
     while(ok == false){ 
      temps++; 
      try{ 
       Thread.sleep(1000); 
       label1.setText(getMissatge1()); 
       label2.setText(getMissatge2()); 
       label3.setText("Working " + String.valueOf(temps)); 
      }catch (Exception a){ 

      } 
     } 
    } 
} 

И это так, что я запустить тему:

FINESTRA Finestra = новый FINESTRA(); Finestra.start();

Большое спасибо!

ответ

0

Вы пытаетесь сделать обновления gui вне потока сообщений о событиях. Это не рекомендуется и приведет к поведению, которое вы видите ...

см. How to update java GUI from Thread? для техник о том, как обеспечить обновление в потоке отправки событий.

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