我试图在点击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上有。