Ausgabe schrittweise

bvdcomp

Aktives Mitglied
Hallo zusammen

Ich möchte folgendes tun:

von einer anderen Klasse eine Methode aufrufen welche mir eine liste von Objekte sortiert und nacheinander im JTextArea ausgeben lässt.

Das Ausgaben geht zwar, aber nicht schrittweise -> D.h. ich kann die Ausgabe nicht verfolgend was zur Laufzeit passiert. Ich brauche so zu sagen bei jeder Zeile die geschrieben wird eine "pause".

Ich habe bis lang folgendes gemacht:

Java:
 stepbystep = new JButton("Sortieren step by step");
        stepbystep.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { 
                            	   for(int i = 0; i <10; i++){
                            		   textArea.setText(Student.sortStepbyStep());}
                               }
                           });

Die Methode stepbystep sieht wie folgt aus:
Java:
public static String sortStepbyStep()
 {
	 String sortierterWert = "";
	 int i = 0;
	 int t = 0;
	 for (Student alle : studis) {    
		 sortierterWert += studis[t].toString()+ studis[t].getAbstand();
		 t++;
	 }
	 Arrays.sort(studis);
	 sortierterWert +=  studis[i].getAbstand() + studis[i].zweiteFormatierung();
	 
	 int l = 0;
	 for (Student alle : studis) {  
		 sortierterWert += studis[l]+ studis[i].getAbstand();
		 l++;
	 }
	 sortierterWert += studis[i].getAbstand() ;
	 sortierterWert += studis[i].dritteFormatierung() + studis[i].getAbstand();
		  
	 return sortierterWert;

Es kompiliert zwar aber ich bekomme nur Fehlermeldungen hierbei.

Kann mir jemand weiterhelfen??????:L???:L???:L
 

bvdcomp

Aktives Mitglied
Folgende Fehler kommen dann:

Java:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: Student cannot be cast to java.lang.Comparable
	at java.util.Arrays.mergeSort(Arrays.java:1144)
	at java.util.Arrays.sort(Arrays.java:1079)
	at Student.sortStepbyStep(Student.java:94)
	at StudentHA3CHF 3.01actionPerformed(StudentHA3.java:90)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6267)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6032)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: Student cannot be cast to java.lang.Comparable
	at java.util.Arrays.mergeSort(Arrays.java:1144)
	at java.util.Arrays.sort(Arrays.java:1079)
	at Student.sortStepbyStep(Student.java:94)
	at StudentHA3CHF 3.01actionPerformed(StudentHA3.java:90)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6267)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6032)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

ich bin nicht ganz sicher ob ich den richtigen weg gewählt habe.
:oops:
 

Michael...

Top Contributor
Es kompiliert zwar aber ich bekomme nur Fehlermeldungen hierbei.
Also bekommst Du die Ausgabe grundsätzlich nicht hin - unabhängig von der "schrittweisen" Ausgabe.
Wenn Du das ganze verzögert Stück für Stück ausgeben willst musst Du mit Threads arbeiten - ist aber m.M. noch nichts für Dich.

Warum nutzt Du for each Schleifen, wenn Du dann doch mit einem Zählindex auf das Array zugreifst?
Benutzt StringBuilder oder StringBuffer zur Verkettung von Strings.

Welche Fehlermeldungen kommen denn? Und wie sieht die Klasse Student aus?
 

bvdcomp

Aktives Mitglied
Ich habe in der Klasse Student eine weitere Methode startSortieren, diese funktioniert und tun genau das, was sie soll:
Java:
public static String startSortieren()
 {
  String sortierterWert = "";
  
  List<Comparator> comp = new ArrayList<Comparator>();
  comp.add(new NummerSortieren());
  comp.add(new NameSortieren());
  comp.add(new AlterSortieren());
  comp.add(new NoteSortieren());
  
  String[] titel = new String[4];
  titel[0] = "Nach Nummer aufsteigend sortieren: ";
  titel[1] = "Nach Namen aufsteigend sortieren: ";
  titel[2] = "Nach Alter aufsteigend sortieren: ";
  titel[3] = "Nach Durchschnittsnote absteigend sortieren: ";
  
  int i = 0; // Wir benötige um Array titel auszugeben.

  for (Comparator curComp: comp) { 
   sortierterWert += titel[i] + studis[i].getAbstand()
   + studis[i].ersteFormatierung()+ studis[i].getAbstand();
   int t = 0;
   for (Student alle : studis) {    
    sortierterWert += studis[t].toString()+ studis[t].getAbstand();
    t++;
   }
   Arrays.sort(studis, curComp);
   sortierterWert +=  studis[i].getAbstand() + studis[i].zweiteFormatierung();
    
   int l = 0;
   for (Student alle : studis) {  
    sortierterWert += studis[l]+ studis[i].getAbstand();
    l++;
   }
   i++;
   sortierterWert += studis[i].getAbstand() ;
  }
  sortierterWert += studis[i].dritteFormatierung() + studis[i].getAbstand();
  
  return sortierterWert;
 }

Es gilt also diese Ausgabe "visualisiert" darzustellen, d.h. eben Schrittweise auszugeben.....
 

Michael...

Top Contributor
Das ist erstmal nur eine Fehlermeldung, die einfach nur besagt das Student nicht auf Comparable gecastet werden kann. Da Du ein Student Array mit Arrays.sort sortieren willst muss die Klasse Student das Interface Comparable mit dessen Methode compareTo(...) implementieren.
 

bvdcomp

Aktives Mitglied
Das ist erstmal nur eine Fehlermeldung, die einfach nur besagt das Student nicht auf Comparable gecastet werden kann. Da Du ein Student Array mit Arrays.sort sortieren willst muss die Klasse Student das Interface Comparable mit dessen Methode compareTo(...) implementieren.
Comparable brauche ich aber gar nicht.

Ich deklariere folgendes
Java:
List<Comparator> comp = new ArrayList<Comparator>();
  comp.add(new NummerSortieren());
  comp.add(new NameSortieren());
  comp.add(new AlterSortieren());
  comp.add(new NoteSortieren());
und rufe es dann auf.
und die jeweilige Klasse implementiert compate...
Java:
class NummerSortieren implements Comparator<Student> {
        @Override // Überschreiben der Methode compare
        public int compare(Student b1, Student b2) {
         return b1.getStNr()- b2.getStNr();
        }
}
 

bvdcomp

Aktives Mitglied
Ja aber, das Sortieren ist gar kein Problem. Ich habe das Problem das ich die Ausgabe nicht Schrittweise hinkriege.
Denn ich kann es sortieren und die Ausgabe als ganzes geht ja. Was ich nicht kann, ist das Ausgeben schritt für schritt.
....
 

Michael...

Top Contributor
Und wo kommt dann die Fehlermeldung her?
Du verwendest in Deiner Methode java.util.Arrays.sort(...). Die ist nunmal auf ein StudentArray - aus den bereits erwähnten Gründen - nicht anwendbar und wirft daher eine Exception.

Zum "schrittweisen" ausgeben müsstest Du Dir halt mal das Thema Threads und nebenläufige Programmierung anschauen.
 

ARadauer

Top Contributor
Ja aber, das Sortieren ist gar kein Problem.

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: Student cannot be cast to java.lang.Comparable

ich denke schon, dass das ein Problem ist ;-)

Also wenn du mit Comperator sorieren willst, musst du den auch bei der sort Methode von Arrays mitgeben. Die Methode gibt es auch mit 2 Parameter.

Also Collection.sort/Arrays.sort entweder Objekte müssen Compareable implementieren oder Comperator mitgeben...
 

bvdcomp

Aktives Mitglied
Gibt es denn keine einfache Möglichkeit, wo ich sagen kann mach eine Pause beim Ausgeben, bis wieder geklickt wird??

Java:
 String sortierterWert = "";
		 List<Comparator> comp = new ArrayList<Comparator>();
		 comp.add(new NummerSortieren());
		 comp.add(new NameSortieren());
		 comp.add(new AlterSortieren());
		 comp.add(new NoteSortieren());
		 
		 int i = 0;
		 for (Comparator curComp: comp) { 
			 sortierterWert += titel[i] + studis[i].getAbstand()
			 + studis[i].ersteFormatierung()+ studis[i].getAbstand();
			 
			 // -> Ausgabe und pause bis gedrückt wird
			 int t = 0;
			 for (Student alle : studis) {    
				 sortierterWert += studis[t].toString()+ studis[t].getAbstand();
				 t++;
			 // -> Ausgabe und pause bis gedrückt wird
			 }
			 
			 Arrays.sort(studis, curComp);
			 sortierterWert +=  studis[i].getAbstand() + studis[i].zweiteFormatierung();
			 
			 int l = 0;
			 for (Student alle : studis) {  
				 sortierterWert += studis[l]+ studis[i].getAbstand();
				 l++;
			 // -> Ausgabe und pause bis gedrückt wird			 
                         }
			 i++; //Variable i um 1 erhöhen, damit der richtige Titel kommt.
			 sortierterWert += studis[i].getAbstand() ;
		 }
		 
		 // -> Ausgabe und pause bis gedrückt wird
		 sortierterWert += studis[i].dritteFormatierung() + studis[i].getAbstand();
		 
		 return sortierterWert;

Gibt es sowas wie einen Break????
 

Michael...

Top Contributor
Gibt es denn keine einfache Möglichkeit, wo ich sagen kann mach eine Pause beim Ausgeben, bis wieder geklickt wird??
Wenn's um einen Klick geht, warum dann Pause machen? Warum nicht per Listener auf den Klick (worauf auch immer) reagieren?
Grundsätzlich musst Du aber die Bearbeitungsschritte in einzelne Einheite zerlegen, innerhalb einer Methode ist das so dann nicht abbildbar.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D graphische Ausgabe zu langsam (vsync gzielt abschaltbar?)... AWT, Swing, JavaFX & SWT 13
D Hohe Prozessorauslastung bei Ausgabe auf TextArea AWT, Swing, JavaFX & SWT 2
P GUI Ausgabe des Strings AWT, Swing, JavaFX & SWT 3
S Ausgabe aktualisiert sich nur nach 2. Klick AWT, Swing, JavaFX & SWT 17
ralfb1105 JavaFX MVC: Thread in Model Class mit Ausgabe in TextArea AWT, Swing, JavaFX & SWT 10
F JavaFX textField Ausgabe automatisch kopieren AWT, Swing, JavaFX & SWT 7
S Ausgabe in JTextArea AWT, Swing, JavaFX & SWT 13
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
M Ausgabe der HSL oder RGB Zusammensetzung einer Farbe (JColorChooser AWT, Swing, JavaFX & SWT 1
N Swing Jtextfield und Ausgabe von Wärungsbeträgen AWT, Swing, JavaFX & SWT 3
KilledByCheese Swing Seltsame Ausgabe nach ButtonClick AWT, Swing, JavaFX & SWT 1
P JavaFX Komische konsolen Ausgabe (nur roter Pfad) AWT, Swing, JavaFX & SWT 7
D Swing Warum erhalte ich keine Ausgabe? Funktioniert der equals-vergleich in actionPeformed nicht richtig? AWT, Swing, JavaFX & SWT 3
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
H Swing jComboBox Ausgabe -1/null AWT, Swing, JavaFX & SWT 4
A Swing Zwei Klassen mit Textfeld Eingaben vergleichen und Ausgabe erzeugen AWT, Swing, JavaFX & SWT 10
A Swing 2 JSlider verknüpfen und mit einem JTextField vergleichen, dann Ausgabe AWT, Swing, JavaFX & SWT 5
X JTextField Ausgabe klappt nicht AWT, Swing, JavaFX & SWT 4
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
T Swing Ausgabe aus ArrayList in Klasse1 in jTextArea in Klasse2 AWT, Swing, JavaFX & SWT 2
L Schöne Ausgabe in Form einer Liste AWT, Swing, JavaFX & SWT 5
E Keine Ausgabe auf Console und List AWT, Swing, JavaFX & SWT 13
J Swing Ausgabe in JTable AWT, Swing, JavaFX & SWT 3
J Swing Ausgabe in einem JFrame AWT, Swing, JavaFX & SWT 8
S String Array Ausgabe im JLabel ??? AWT, Swing, JavaFX & SWT 8
E Keine Ausgabe von JList bei drücken von Button auf die Konsole AWT, Swing, JavaFX & SWT 7
P Ausgabe Label AWT, Swing, JavaFX & SWT 6
D Fenster will keine Ausgabe geben>:( AWT, Swing, JavaFX & SWT 3
kniffel Ausgabe von leeren JTable Zeilen AWT, Swing, JavaFX & SWT 3
C TextArea Ausgabe immer ganz oben AWT, Swing, JavaFX & SWT 3
S TextArea ausgabe ohne JFrame zu implementieren AWT, Swing, JavaFX & SWT 2
M Swing Ausgabe in JTextArea verzögern AWT, Swing, JavaFX & SWT 7
R JComboBox Ausgabe in String speichern AWT, Swing, JavaFX & SWT 3
H Swing Ausgabe auf 2 nachkomma stellen beschränken AWT, Swing, JavaFX & SWT 3
D Vollbild ausgabe AWT, Swing, JavaFX & SWT 2
M Swing Probleme bei der Ausgabe der JList AWT, Swing, JavaFX & SWT 2
J Swing Swing Ein/Ausgabe von einem Datum AWT, Swing, JavaFX & SWT 3
H Ausgabe an Textfeld JTextField AWT, Swing, JavaFX & SWT 3
W Welche Text ausgabe möglichkeit ist geeignet... AWT, Swing, JavaFX & SWT 6
S Tabellen und Text Ausgabe in Swing GUI AWT, Swing, JavaFX & SWT 3
Z GUI-Ausgabe mit Bild und Sound AWT, Swing, JavaFX & SWT 3
M Ausgabe nach Klick auf JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 6
D JTable Viewport - Ausgabe der sichtbaren Spalten AWT, Swing, JavaFX & SWT 2
F dynamische Ausgabe eines extenen Programms umleiten AWT, Swing, JavaFX & SWT 6
J Bildfilterung und Ausgabe in ein ImageIcon AWT, Swing, JavaFX & SWT 2
S Dynamische Ausgabe im JTextField AWT, Swing, JavaFX & SWT 7
L Problem bei der Ausgabe JTextArea AWT, Swing, JavaFX & SWT 3
S Eingeschränkte Ausgabe auf 2. Bildschirm? (Laptop VGA Output AWT, Swing, JavaFX & SWT 4
P SWT Performance : "Text" - Ausgabe beschleunigen ? AWT, Swing, JavaFX & SWT 21
G Aktualisierung der Ausgabe in SWT AWT, Swing, JavaFX & SWT 2
Z Die ausgabe.setText(b.getisbn()); überschreibt sich jedesmal AWT, Swing, JavaFX & SWT 4
E Frage? Warum funktioniert die grafische Ausgabe nicht? AWT, Swing, JavaFX & SWT 4
J DB-Ausgabe realisieren? AWT, Swing, JavaFX & SWT 2
M Ausgabe mit JOptionPane AWT, Swing, JavaFX & SWT 6
G Bedingte Ausgabe beim JTree AWT, Swing, JavaFX & SWT 4
M Konsolenprg-Ausgabe in GUI geleitet - Brauche ich Threads? AWT, Swing, JavaFX & SWT 2
V JTree Children Ausgabe Problem AWT, Swing, JavaFX & SWT 2
V Tree Ausgabe Problem AWT, Swing, JavaFX & SWT 2
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
B Element schrittweise verschieben AWT, Swing, JavaFX & SWT 2
bj99 Swing [Erledigt] Bild schrittweise zoomen AWT, Swing, JavaFX & SWT 4
T swing - grafik schrittweise ausgeben ohne repaint() AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben