2016-01-22 86 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?有關如何確保事件分派線程中的更新的技巧。