使GUI立即刷新

时间:2019-04-06 13:57:30

标签: java user-interface jframe jpanel repaint

我正在制作一个GUI,以显示排序算法的工作原理,并使用3层系统(Controll类,GUI和算法)来进行。

基本原理:

-带有数字的数组在Controll类中 -Controll类告诉GUI显示数组(我正在为此使用不同大小的条) -Controll类告诉算法将数组进一步排序 -Controll类告诉GUI显示新数组

但是,当使用gui.repaint()函数时,gui不会立即重新绘制(在我的情况下,是在完成所有排序操作之后)。

有什么办法可以解决这个问题?

我曾考虑过使用线程来解决问题,但是我的排序算法不是静态的,因此无法将其设为线程。

        Bubblesort bubblesort= new Bubblesort(nums, gui);
        gui.repaint();

        for(int i=0; i<nums.length-1; i++) {
            for(int j=0; j<(nums.length-1)-i; j++) {
                bubblesort.nextStep(j);
                //gui.repaint();
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

上面的代码只是使GUI在排序时冻结,然后在完成后显示所有内容。 但是,我需要在排序时刷新GUI。我该怎么做?

0 个答案:

没有答案