Java - 使用计时器进行动画插入排序

时间:2017-02-10 03:44:22

标签: java swing animation timer insertion-sort

我目前正在开发一个项目,用于可视化表示插入排序,其中条形图在屏幕上以图形方式移动。但是,我需要在每个命令之间启动一个计时器,而不使用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();
    }
}

0 个答案:

没有答案