2016-01-22 83 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?有关如何确保事件分派线程中的更新的技巧。