框架无法正确显示

时间:2016-01-22 10:59:11

标签: java multithreading jframe

我制作了一个打开数据库并进行更新的程序,这个更新的时间很长,我试图建立一个新的框架,用户可以看到更新的状态。

问题是: 当我启动新线程时,窗口的结构已创建,但不显示任何其他内容。 更新完成后,窗口完成加载完全所有内容。

我做错了什么?

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();

非常感谢!

1 个答案:

答案 0 :(得分:0)

您尝试在事件派发线程之外进行gui更新。不推荐这样做,会导致您看到的行为......

请参阅How to update java GUI from Thread?,了解如何确保事件发送线程中的更新。