Hallo Leute,
Erstmal sorry, dass ich das Thema nochmal aufgemacht habe, obwohl es schon mal vorkam, allerdings passten die Lösungsvorschläge nicht zu meinem Problem.
Also ich habe ein Array aus ints. Dieses wird im Programm auf einem JFrame in Form eines Graphen und in einer Tabelle dargestellt.
Ich habe verschiedene Buttons um verschiedene Sortieralgorithmen auf das Array anzuwenden, alle funktionieren, aber wenn ich sie aktiviere habe ich hinterher nur die sortierte Form des Arrays auf dem JFrame...
Für mein Referat würde ich die Reihenfolge der Schritte allerdings gerne sichtbar machen.
Das Hauptprogramm erbt von einem Thread.
Es gibt folgende globale Instanzen (spielen hier aber an sich keine Rolle):
Die Klasse MyFrame:
Ich habe das ganze so probiert:
(Beispiel Insertionsort)
Aber so wartet das Programm einfach nur ein paar Sekunden und zeigt dann das fertig sortierte Array an.
Könnt ihr mir verraten, was ich falsch gemacht habe, oder wie ich das besser machen könnte?
Gruß Messoras
Erstmal sorry, dass ich das Thema nochmal aufgemacht habe, obwohl es schon mal vorkam, allerdings passten die Lösungsvorschläge nicht zu meinem Problem.
Also ich habe ein Array aus ints. Dieses wird im Programm auf einem JFrame in Form eines Graphen und in einer Tabelle dargestellt.
Ich habe verschiedene Buttons um verschiedene Sortieralgorithmen auf das Array anzuwenden, alle funktionieren, aber wenn ich sie aktiviere habe ich hinterher nur die sortierte Form des Arrays auf dem JFrame...
Für mein Referat würde ich die Reihenfolge der Schritte allerdings gerne sichtbar machen.
Das Hauptprogramm erbt von einem Thread.
Es gibt folgende globale Instanzen (spielen hier aber an sich keine Rolle):
Java:
int[] array;
public JButton neu, merge, quick, insert;
public MyFrame frame;
Die Klasse MyFrame:
Java:
class MyFrame extends JFrame {
public MyFrame (String s) {
super(s);
}
public void paint(Graphics g) {
g.setColor(new Color(230,230,220));
g.fillRect(0,0,getWidth(),getHeight());
//Graph
g.setColor(Color.white);
g.fillRect(80,100,array.length*10,array.length*10);
g.setColor(Color.black);
g.drawRect(80,100,array.length*10,array.length*10);
for (int i = 0; i < array.length; i++) {
g.fillRect(80+i*10,100+array.length*10-(array[i]*10),10,10);
}
g.drawString("Index",array.length*10,120+array.length*10);
g.drawString("Wert",50,150);
//Stapel
for (int i = 0; i < array.length; i++) {
g.drawRect(200+array.length*10,50+i*30,100,25);
g.drawString("Wert ["+i+"] = "+array[i],210+array.length*10,70+i*30);
}
}
}
Ich habe das ganze so probiert:
(Beispiel Insertionsort)
Java:
public void insertionsort(int[] num)
{
int j;
int key;
int i;
for (j = 1; j < num.length; j++)
{
key = num[ j ];
for(i = j - 1; (i >= 0) && (num[ i ] > key); i--)
{
num[ i+1 ] = num[ i ];
}
num[ i+1 ] = key;
try {
frame.repaint();
sleep(500);
} catch(Exception e) {
e.printStackTrace();
}
}
}
Aber so wartet das Programm einfach nur ein paar Sekunden und zeigt dann das fertig sortierte Array an.
Könnt ihr mir verraten, was ich falsch gemacht habe, oder wie ich das besser machen könnte?
Gruß Messoras
Zuletzt bearbeitet: