# Animating Graphical Sort

• March 15th, 2013, 09:39 AM
SiL3NTK0D3R
Animating Graphical Sort
I am working on an assignment called "Graphical Sort", which is basically animating sort algorithm graphically.

I just need help on animating the sorting process.

I tried using Thread, but the program hangs till the threading process is completed, then it shows the final result.

Below are the picture of how my program looks like:
Attachment 1870
Attachment 1871

Below is the JPanel class I made, which I paint on:
Code :

```import javax.swing.*; import java.awt.*; import java.util.*;   public class PaintPanel extends JPanel { // Create an array of 34 element size int[] Arr = new int [34]; // Set default X pointer to 20 int x = 50; // Declare Y pointer to 660 int y = 660; // Set the length of array to n variable int n = Arr.length;     /* * main method * @param none * @return none */ public PaintPanel () { randomNums (); revalidate (); repaint (0, 150, 800, 700); }     /* * Generates random numbers between 50 and 750 and stores it into the Arr variable * @param none * @return none */ public void randomNums () { // call randomGenerator object Random randomGenerator = new Random (); // Loop 33 times = Generates 33 random integers for (int i = 0 ; i <= 33 ; ++i) { // Generate random Number int randomInt = randomGenerator.nextInt (700); // Conditional statement, if any number is less than 50, then discard it and generate new number if (randomInt > 50) // Assign each random number into Arr Element Arr [i] = randomInt; else { // Regenerate Random Number randomInt = randomGenerator.nextInt (700); // Assign it again Arr [i] = randomInt; } } }     /* * Bubble Sort Algorithm * @param none * @return none */ public void bubble () { //Pre: a is an array with values. It is of size n //Post: the values in a are put in ascending order int temp; //int a[] = Arr; for (int i = 0 ; i < n - 1 ; i++) { for (int j = 0 ; j < n - 1 - i ; j++) { // compare the two neighbours if (Arr [j + 1] < Arr [j]) { //swap the neighbours if necessary temp = Arr [j]; Arr [j] = Arr [j + 1]; Arr [j + 1] = temp; repaint (0, 150, 800, 700); } } } }     /* * Paints 33 rectangle Strips to the screen * @param Graphics g * @return none */ public void paintComponent (Graphics g) { super.paintComponent (g); // Call Graphics2D Object Graphics2D g2 = (Graphics2D) g.create (); // Create Paint Object with gradient Fill Paint p = new GradientPaint ( 0, 0, new Color (0x44A2FF), getWidth (), 0, new Color (0x0CBEAE), true ); // Set the gradient fill to the Graphics2D Object g2.setPaint (p);   // Loop through the Array and display series of Rectangular Strips for (int i = 0 ; i < Arr.length ; ++i) { // Fill out the Rectangle g2.fillRect (x, y, Arr [i], 8); y = y - 15; } g2.dispose (); } }```

What should I use to animate the process. I also want to show which rectangular strips are being compared during the process of sorting.

Thank You
• March 15th, 2013, 11:00 AM
Norm
Re: Animating Graphical Sort
Normally with animation the program makes a change, calls repaint() and the painting method is called to display that change. Then another change is made, repaint() is called etc

How is the posted code executed for testing? There is not a main() method.