我制作了一个打开数据库并进行更新的程序,这个更新的时间很长,我试图建立一个新的框架,用户可以看到更新的状态。
问题是: 当我启动新线程时,窗口的结构已创建,但不显示任何其他内容。 更新完成后,窗口完成加载完全所有内容。
我做错了什么?
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 = new finestra(); Finestra.start();
非常感谢!
答案 0 :(得分:0)
您尝试在事件派发线程之外进行gui更新。不推荐这样做,会导致您看到的行为......
请参阅How to update java GUI from Thread?,了解如何确保事件发送线程中的更新。