在动画的Actionlistener内部重复更新For循环内部的JPanel

时间:2016-12-19 06:49:20

标签: java swing for-loop jpanel actionlistener

我试图在点击JButton后重复更新JPanel。我有一个名为updatePanelGrid()的方法,它使用JButton ActionListener激活,并且其中的所有内容都可以正常工作。我有另一个名为updatePanelGridVisual()的方法,它调用updatePanelGrid()数百次,并使用JButton ActionListener激活;但是,它不能很好地工作。目标是它以与updatePanelGrid()相同的方式每0.1秒更新一次,使得有点动画。 (顺便说一句,我是Java的新手。)

这是类方法updatePanelGridVisual():

public void updatePanelGridVisual(JPanel panelGrid, ArrayList<Grid> backtrackingGrids) {
    new Thread() {
        @Override
        public void run() {
            for (int i=0; i<backtrackingGrids.size(); i++) {
                updatePanelGrid(panelGrid, backtrackingGrids.get(i));//Not working.
                System.out.println(backtrackingGrids.get(i));//For testing, prints fine.
                try {
                    //Pause for 0.1 seconds
                    Thread.sleep(100);//Time in milliseconds.
                } catch (InterruptedException ex) {
                    Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }.start();
}

这是JButton ActionListener,它位于main:

button.addActionListener(
    new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            updatePanelGridVisual(panelGrid);
        }
    }
);

所有内容都完全按照我的预期打印到控制台,但是当调用updatePanelGrid(panelGrid,backtrackingGrids.get(i))时,它将不执行任何操作或仅部分更新,仅创建网格的一部分我在panelGrid上有。

0 个答案:

没有答案