Sortieralgorithmus graphisch darstellen

Messoras

Aktives Mitglied
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):
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:

Messoras

Aktives Mitglied
Es sieht aber auf jeden Fall so aus, als hätte die repaint Methode ein Problem mit dem Thread.
Wenn ich statt repaint() zB. etwas von der Konsole ausgeben lasse, funktioniert es richtig.
Ich kann auch in die Direkteingabe zB.
Java:
Sortieralgorithmen s = new Sortieralgorithmen();
s.insertionsort(s.array);
eingeben, dann läuft das Programm, so wie es soll.
Ich denke ich muss die paint- oder die Sortiermethode in einen anderen Thread verlagern.
Wie mache ich das?
Ich habe schon versucht die Sortieralgorithmen in eine neue Klasse zu schieben, die von einem Thread erbt, aber da habe ich wieder das Problem, dass erst nach der Wartezeit repaintet wird...

Gruß Messoras
 

Thallius

Top Contributor
Das Sortieren sollte im Hintergrund stattfinden. Am besten nimmst du dafür einen Swingworker. Wenn Du einen Sortierschritt gemacht hast, dann rufst du ein Update im MainThread auf und wartest im Hintergrundthread ein wenig. Dann sollte der MainThread auch nachkommen mit dem neu Zeichnen.

Gruß

Claus
 

Messoras

Aktives Mitglied
Ich hab leider überhaupt keinen Plan von Swingworkern...
Ich dachte ich muss das irgendwie mit Threads regeln? :S
Wie muss ich das machen?

Gruß Messoras
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Sortieralgorithmus - Aufgabe mit Lösungsidee Java Basics - Anfänger-Themen 20
L Sortieralgorithmus Java Basics - Anfänger-Themen 17
2 Erste Schritte Sortieralgorithmus Array Java Basics - Anfänger-Themen 6
D Sortieralgorithmus mit Systemzeit messen Java Basics - Anfänger-Themen 7
K Sortieralgorithmus Java Basics - Anfänger-Themen 10
M BubbleSort (Sortieralgorithmus) Java Basics - Anfänger-Themen 28
C Sortieralgorithmus grafisch darstellen Java Basics - Anfänger-Themen 3
Streeber Sortieralgorithmus Java Basics - Anfänger-Themen 8
F Sortieralgorithmus von rekursiv auf iterativ? Java Basics - Anfänger-Themen 21
G Sortieralgorithmus mit Rekursion funktioniert nicht Java Basics - Anfänger-Themen 26
S Hilfe zu einfachstem Sortieralgorithmus gesucht Java Basics - Anfänger-Themen 2
N sortieralgorithmus Java Basics - Anfänger-Themen 32
R Frage zu Sortieralgorithmus Java Basics - Anfänger-Themen 13
I Baum graphisch darstellen Java Basics - Anfänger-Themen 2
Z Netzwerk graphisch Darstellen Java Basics - Anfänger-Themen 5
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Binominalkoeffizient tail-rekursiv in java darstellen Java Basics - Anfänger-Themen 0
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
F Hierarchi im code darstellen Java Basics - Anfänger-Themen 11
CptK Best Practice Merge-Sort als Baum darstellen Java Basics - Anfänger-Themen 3
E Kreis soll eine Raupe darstellen Java Basics - Anfänger-Themen 37
Orkanson Long Binär darstellen Java Basics - Anfänger-Themen 1
J Eingelesene Datei im Histrogramm darstellen Java Basics - Anfänger-Themen 3
pkm Best Practice BufferedImage in JPane darstellen - aber wie? Java Basics - Anfänger-Themen 22
D Klassen Wert aus JTextfield in JLabel (andere Klasse) darstellen. Java Basics - Anfänger-Themen 60
kilopack15 DoWhile-Schleife als While-Schleife darstellen Java Basics - Anfänger-Themen 9
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
E Input/Output Switch ausgabe anpassen bzw. anders darstellen Java Basics - Anfänger-Themen 13
L Mit java ein wort mehrfach versetzt darstellen Java Basics - Anfänger-Themen 14
H Wav-Datei grafisch darstellen Java Basics - Anfänger-Themen 2
3 Gitternetz richtig darstellen Java Basics - Anfänger-Themen 3
M Konkatenation in Sequenzdiagramm darstellen Java Basics - Anfänger-Themen 0
I Anzahl der Rechenschritte darstellen lassen Java Basics - Anfänger-Themen 11
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
N Erste Schritte MySQL Tabelle in JList darstellen Java Basics - Anfänger-Themen 1
F Wurzelzeichen darstellen, Wie? Java Basics - Anfänger-Themen 7
V Intervall als Array darstellen Java Basics - Anfänger-Themen 10
A OOP Buchstaben mit ASCII Werten darstellen Java Basics - Anfänger-Themen 1
B Einfache jsp Seite darstellen Java Basics - Anfänger-Themen 9
P Erste Schritte Buffered Image splitten und darstellen Java Basics - Anfänger-Themen 2
U Exponent ausgeben bzw. darstellen Java Basics - Anfänger-Themen 15
H Wie kann ich in Java unbekannte Variablen in Gleichungen darstellen? Java Basics - Anfänger-Themen 3
J Zeichen für Durchmesser Ø in Label darstellen Java Basics - Anfänger-Themen 15
F Erste Schritte bild darstellen Java Basics - Anfänger-Themen 2
J Ein Grafisches Gitternetz (für Schiffe versenken) darstellen - Wie? Java Basics - Anfänger-Themen 6
P Zahlen als Unicode darstellen Java Basics - Anfänger-Themen 2
F Koordinaten JList darstellen Java Basics - Anfänger-Themen 4
A double and add algorithmus für elliptische kurven/ integer binär darstellen Java Basics - Anfänger-Themen 14
M Bild in Applet darstellen Java Basics - Anfänger-Themen 6
T Input/Output Scanner Eingaben auf Console farbig darstellen, wie? Java Basics - Anfänger-Themen 13
S String mit ASCII/HTML Zeichen darstellen Java Basics - Anfänger-Themen 10
D Graphics2D (Welle darstellen) Java Basics - Anfänger-Themen 2
D Problem: Deutschlandkarte darstellen ? Java Basics - Anfänger-Themen 12
Beckenbauer Eine anstehende (sehr simple) Applikation in UML darstellen (Klassendiagramm) Java Basics - Anfänger-Themen 20
D Kreissegment darstellen Java Basics - Anfänger-Themen 16
alderwaran objekthierarchie darstellen während der laufzeit Java Basics - Anfänger-Themen 2
F FileSystem in Baum darstellen/wurzel festlegen Java Basics - Anfänger-Themen 3
E Auschnitt einer Liste darstellen Java Basics - Anfänger-Themen 7
A Klassen als GUI darstellen Java Basics - Anfänger-Themen 3
S Skatblatt darstellen durch Random? Java Basics - Anfänger-Themen 48
B OOP Comparator - Sortierung "optisch" Darstellen Java Basics - Anfänger-Themen 17
Forlan " <- Darstellen Java Basics - Anfänger-Themen 5
C Zwei Klassen in einem Fenster darstellen Java Basics - Anfänger-Themen 32
S RBTree - baumstruktur darstellen Java Basics - Anfänger-Themen 7
T Tupelweises Darstellen Java Basics - Anfänger-Themen 14
Z Java in HTML darstellen Java Basics - Anfänger-Themen 4
Y Einfachen Quelltext in UML darstellen mit Eclipse Java Basics - Anfänger-Themen 8
A Umlaute darstellen Java Basics - Anfänger-Themen 4
A bilddateinamen aus array auslesen und bild darstellen? Java Basics - Anfänger-Themen 2
T ASCII Tabelle darstellen Java Basics - Anfänger-Themen 7
S String Hochzahlen darstellen Java Basics - Anfänger-Themen 6
G BigDecimal mit zwei Nachkommastellen darstellen Java Basics - Anfänger-Themen 2
K Kurve Darstellen Java Basics - Anfänger-Themen 4
A Einfachstes HTML in Java darstellen Java Basics - Anfänger-Themen 4
T Inhalt einer Datei in Jlist darstellen Java Basics - Anfänger-Themen 6
G Wert im Eingabedialog darstellen Java Basics - Anfänger-Themen 2
B Bild in JFrame darstellen geht irgendwie nicht Java Basics - Anfänger-Themen 13
X Java Applet offline darstellen Java Basics - Anfänger-Themen 8
E Schreiben in Excel -Zellen farbig darstellen Java Basics - Anfänger-Themen 4
A mathematische Funktionen grafisch darstellen Java Basics - Anfänger-Themen 8
M Dateisystem in Jtree - Ordnericon darstellen Java Basics - Anfänger-Themen 4
V Text in Eingabefeld mehrfarbig darstellen? Java Basics - Anfänger-Themen 6
M Laufzeitverhalten von Sortieralgorithmen darstellen Java Basics - Anfänger-Themen 3
S Verzeichnis darstellen Java Basics - Anfänger-Themen 3
S Funktionsgleichungen darstellen Java Basics - Anfänger-Themen 4
H Application vernünftig darstellen und beenden Java Basics - Anfänger-Themen 2
J Mehrere Objekte in einem JFrame darstellen Java Basics - Anfänger-Themen 6
deetee Kommazahl richtig darstellen Java Basics - Anfänger-Themen 4
M Sortieralgorythmen bzw. Suchalgorythmen grafisch darstellen Java Basics - Anfänger-Themen 3
G Zeichen darstellen Java Basics - Anfänger-Themen 5
Chucky Rekursion grafisch darstellen anhand eines Applets Java Basics - Anfänger-Themen 14
C Image-Objekt darstellen Java Basics - Anfänger-Themen 6
K mehrere DB Einträge in einem JTable darstellen ?HILFE! Java Basics - Anfänger-Themen 2
G Mit Java (und Eclipse) Diagramme darstellen Java Basics - Anfänger-Themen 4
N ein Array in zwei verschiede TextAreas darstellen Java Basics - Anfänger-Themen 6
M Mit Koordinaten, JToolTip auf JPanel darstellen Java Basics - Anfänger-Themen 3
M Grafik auf einem JPanel erneut darstellen Java Basics - Anfänger-Themen 3
G jEditorPane: inhalt ohne zeilenumbruch darstellen. wie? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben