在Swing中设置动作之间的延迟(排序算法Visualizer)

时间:2014-12-04 21:33:28

标签: java swing timer delay

为了学习,我一直在尝试构建一个可视化器(like this one)来展示不同的排序算法是如何工作的。我对Swing没有过多的经验,而且我正在读我应该使用Timer,但我似乎无法理解如何正确使用它。

import javax.swing.Timer;
//  .....
public class sortPanel extends JPanel {
    private ArrayList<Integer> list;
    // .....


    public void selectionSort(int msDelay) {
            // code here that loops through and sorts the ArrayList.
            // I know how to do this part but do not want to start it until I get Timer working.
            Timer timer = new Timer(msDelay, new ActionListener() {
                    public void actionPerformed(ActionEvent ae) {
                        repaint();
                    }
            });
            timer.start(); 
    }
    // .....
}

这就是我的GUI:

This is what my GUI looks like

四个面板中的每一个都是sortPanel的一个实例。红色圆圈是算法所在阵列的当前索引。开始按钮(现在)调用第一个面板的selectionSort方法。

当命令只是增加索引时,我能够让Timer正常工作,但对于一个更复杂的任务,我希望在每次索引更改以及数组修改后都有延迟,我不知道如何使它工作。

有什么建议吗?我也很欣赏在编写实践/惯例方面对我编码的一般批评。

完整来源here

0 个答案:

没有答案