为了学习,我一直在尝试构建一个可视化器(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:
四个面板中的每一个都是sortPanel的一个实例。红色圆圈是算法所在阵列的当前索引。开始按钮(现在)调用第一个面板的selectionSort方法。
当命令只是增加索引时,我能够让Timer正常工作,但对于一个更复杂的任务,我希望在每次索引更改以及数组修改后都有延迟,我不知道如何使它工作。
有什么建议吗?我也很欣赏在编写实践/惯例方面对我编码的一般批评。
完整来源here。