1 import java.awt.Graphics;
2 import javax.swing.JComponent;
3
4 /**
5 A component that displays the current state of the selection sort algorithm.
6 */
7 public class SelectionSortComponent extends JComponent
8 {
9 private SelectionSorter sorter;
10
11 /**
12 Constructs the component.
13 */
14 public SelectionSortComponent()
15 {
16 int[] values = ArrayUtil.randomIntArray(30, 300);
17 sorter = new SelectionSorter(values, this);
18 }
19
20 public void paintComponent(Graphics g)
21 {
22 sorter.draw(g);
23 }
24
25 /**
26 Starts a new animation thread.
27 */
28 public void startAnimation()
29 {
30 class AnimationRunnable implements Runnable
31 {
32 public void run()
33 {
34 try
35 {
36 sorter.sort();
37 }
38 catch (InterruptedException exception)
39 {
40 }
41 }
42 }
43
44 Runnable r = new AnimationRunnable();
45 Thread t = new Thread(r);
46 t.start();
47 }
48 }
49