[英]Frame doesn't show correctly
我制作了一个程序,该程序可以打开数据库并进行更新,该更新的时间非常长,我试图制作一个新的框架,使用户可以看到更新的状态。
问题是:当我启动新线程时,将创建窗口的结构,但不显示其他任何内容。 更新完成后,该窗口将完全加载所有内容。
我究竟做错了什么 ?
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();
非常感谢!
您正在尝试在事件分发线程之外进行gui更新。 不建议这样做,这会导致您看到的行为...
请参阅如何从线程更新Java GUI? 有关如何确保在事件分发线程中进行更新的技术。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.