我目前正在开发一个项目,用于可视化表示插入排序,其中条形图在屏幕上以图形方式移动。但是,我需要在每个命令之间启动一个计时器,而不使用sleep方法。现在我已经设法让它排序,然而,它并没有经历每一步。 Here is a GIF of my current project in action.我需要为每一步启动计时器,在算法的每个部分之后重新绘制。我有什么方法可以解决这个问题?
public void insertSort(){
if(i < data.length){
for(int j = i; j > 0; j--){
if(data[j] < data[j-1]){
int temp = data[j];
data[j] = data[j-1];
data[j-1] = temp;
}
repaint();
}
}
i++;
timer.start();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(setColor);
int xChange = 20;
for(int i = 0; i < data.length; i++){
if(data[i] != 0){
g.fillRect(xChange,HEIGHT-data[i],10,data[i]);
xChange = xChange + 20;
}
}
}
public class TimeListener implements ActionListener{
public void actionPerformed(ActionEvent e){
timer.stop();
insertSort();
}
}