Problem mit ActionListener

bvdcomp

Aktives Mitglied
Hallo zusammen

ich verzweifle fast, ich habe folgenden Code der nicht stimmt:

Java:
class Student implements ActionListener{
    private int stNr; 
    private String name;
    private int alter;
    private double note;
    
    Student[] studis = {     
            new Student(1, "Walterli Tell junjun.", 12, 4.3),
            new Student(2, "Greengrey vonRotz", 20, 3.7),
            .....
            .....
      };
    
    
    public Student(int stNr, String name, int alter, double note) {
        this.stNr = stNr;  
        this.name = name;
        this.alter = alter;
        this.note = note;
  
		fensterErzeugen();	
	}

   public static void main(String[] args) {
	   fensterErzeugen();
	   List<Comparator> comp = new ArrayList<Comparator>();
	      comp.add(new NummerSortieren());
	      comp.add(new NameSortieren());
	      comp.add(new AlterSortieren());
	      comp.add(new NoteSortieren());	      
   }
   

   public static void fensterErzeugen()
   {
	 //Create and set up the window.
	   JFrame fenster = new JFrame("Hausaufgabe 3 - GUI");
	   final JTextArea jta;
	      
	   JPanel jpanel_0 = new JPanel(new BorderLayout());      
	   JPanel jpanel_1 = new JPanel(new GridLayout(0,1));
	   
	   jpanel_1.add(new JButton("Anfangszudtand").addActionListener(new ActionListener(){
           @Override
           public void actionPerformed(ActionEvent event) {
        	   [B]event = studis;[/B]                       
           }
       }));

Ich möchte dohc, wenn jemand auf diesen Button klickt, das der Anfangszustand hergestellt wird.
Wieso geht das nicht?

Kann mir jemand helfen????:shock::shock:
 

eRaaaa

Top Contributor

Ach da, okay darauf hatte ich nicht geachtet, wegen "implements ActionListener" <--
Du solltest dir mal durchlesen wie man das mit den Listenern genau macht, weil du solltest dich für eine Methode entscheiden *g*

Gut, zu deiner actionPerformed: du weist deiner lokalen Variable event, die übrigens vom Typ ActionEvent ist, dein Student-Array zu ?! Geht a) gar nicht und b) machts auch kein Sinn :>

Und was genau meinst du jetzt mit Anfangszustand? Hol doch bei deiner Beschreibung mal ein wenig aus...:autsch:
 

bvdcomp

Aktives Mitglied
Ja, ich weis es ist ein wenig schlecht beschrieben :noe:

Es soll folgendes tun:

Ein kleines GUI-Programm mit einigen Buttons welches nach verschiedenen Möglichkeiten sortieren kann.

Ich schaffe es allerdings nicht. Ich habe auch folgendes versucht:


Java:
jpanel_1.add(new JButton("Anfangszudtand").addActionListener(new ActionListener(){
           @Override
           public void actionPerformed(ActionEvent event) {
        	   erzeugeStudent ();                       
           }
       }));

Java:
public static void erzeugeStudent ()
	{
		Student[] studis = {     
            new Student(1, "Walterli Tell junjun.", 12, 4.3),
            new Student(2, "Greengrey vonRotz", 20, 3.7),
            new Student(3, "Fritzli Schneider", 9, 5.9),
            new Student(4, "Archimedes Syrakus", 2296, 6.0),
            new Student(5, "Maria Stuart", 467, 2.9)
      };
    }

Aber das funkt auch nicht.:rtfm::rtfm:
 

eRaaaa

Top Contributor
weil du da ein neues Array deklarierst was auch nur in dieser Methode gültig ist. Das ist nicht das Array welches du oben bereits deklariert hast. Lasse das [c]Student[][/c] mal weg und :rtfm: :)
 

eRaaaa

Top Contributor
Also du meinst das Array im Konstruktor erstellen und es dann aufrufen??

mit -> new Student;???

Nein, ich meine das was ich schrieb :D

Java:
	public static void fensterErzeugen() {
		 studis = { new Student(1, "Walterli Tell junjun.", 12, 4.3),
				new Student(2, "Greengrey vonRotz", 20, 3.7),
				new Student(3, "Fritzli Schneider", 9, 5.9),
				new Student(4, "Archimedes Syrakus", 2296, 6.0),
				new Student(5, "Maria Stuart", 467, 2.9) };

	}

wobei du dann immer noch lesen solltest, denn das wird auch nicht funktionieren. Im FAQ steht dazu auch etwas (static / non-static)
 

bvdcomp

Aktives Mitglied
Ich hab es nun etwas refactioring gemacht und habe folgendes versucht:

Java:
sortieren.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { 
                                textArea.setText(Student.anfangsZustand());
                               }
                           });
        werkzeugleiste.add(sortieren);

In der Klasse Student habe ich eine Methode anfangsZustand() erstellt, welche die Array-Werte hält.

Allerdings ist mir nicht granz klar wie ich als return mitgebe, der Aufruf
Java:
textArea.setText(Student.anfangsZustand());
keinen void zulässt.

Hat jemand eine Idee??
 
S

SlaterB

Gast
wäre es dir denn liebern, wenn 'void zugelassen wäre'?
wieso schreibst du das überhaupt zusammen, schreibe doch zwei Zeilen

> Student.anfangsZustand()
> textArea.setText();
wobei du bei setText() immer noch einen String übergeben musst, "Hallo", "-", oder ganzen Befehl weglassen,
dann kannst du auch gleich den ersten weglassen, welchen Zweck verfolgst du?

also: entweder alle Befehle NICHT hinschreiben, oder du möchtest etwas, z.B. einen Text ausgeben,
dann sollte 'void nicht zugelassen' nicht dein Problem sein, denn du willst ja gerade einen String übergeben,
dann musst du die Methode eben noch so umbauen, dass ein String zurückkommt
 

bvdcomp

Aktives Mitglied
Meine Methode ist folgende:

Java:
public static String anfangsZustand()
    {
        Student[] studis = {     
            new Student(1, "Walterli Tell junjun.", 12, 4.3),
            new Student(2, "Greengrey vonRotz", 20, 3.7),
            new Student(3, "Fritzli Schneider", 9, 5.9),
            new Student(4, "Archimedes Syrakus", 2296, 6.0),
            new Student(5, "Maria Stuart", 467, 2.9)
        };
    
        int i = 0;
        while(i < studis.length)
        {
            System.out.println(studis[i]);
            i++;
        }
        return null;
    }

Ich möchte diese Methode im TextArra auf meiner GUI ausgeben lassen.
Das Problem ist das ich nicht ganz klarkomme wie ich es anstellen soll.???:L
 
S

SlaterB

Gast
Zeile 14 nicht System.out.println, sondern diesen Text zu einem vor der Schleife definierten String hinzufügen,
diesen String am Ende zurückgeben
 

bvdcomp

Aktives Mitglied
Zeile 14 nicht System.out.println, sondern diesen Text zu einem vor der Schleife definierten String hinzufügen,
diesen String am Ende zurückgeben

Also du meinst sowas?
Java:
String  zustand;
        int i = 0;
        while(i < studis.length)
        {
            zustand= studis[i];
            i++;
            return zustand;
        }

aber ich gluab ich hab da was falsch gemacht
 
S

SlaterB

Gast
das return am Ende hinter der Schleife, sonst wird die Schleife ja sofort beendet, dann bräuchtest du gar nicht erst eine Schleife

wenn du alle Infos haben willst musst du die Strings mit += zusammenfügen,
bei der Gelegenheit vielleicht noch Leerzeichen, Komma und/oder Zeilenumbruch (\n) einfügen

die Variable anfangs mit "" initialisieren

die Ausgabe kann kryptisch sein, wenn nicht die toString()-Methode der Klasse überschrieben ist,
vielleicht lieber erstmal nur
zustand += studis.getName()
oder ähnliches
 

bvdcomp

Aktives Mitglied
OK, bislang funkt es nicht ganz so wie es soltle.

ich habe foglendes gemacht:
Java:
String  zustand = null;    
        int i = 0;
        while(i < studis.length)
        {
            zustand += studis[i].getAbstan();
            
            i++;
        }
        return zustand;
    }
    
    public String getAbstand()
    {
        String abstand = "\n";
        return abstand;
        
    }

Es kompiliert, aber ich erhalte null als Ausgabe.:rtfm:
 
S

SlaterB

Gast
wie gesagt, die Variable mit "" inialisieren, sonst kommt "null" in die Ausgabe, wobei ich eher an eine Exception dachte,
du hast aber nicht nur "null" drin, sondern wahrscheinlich auch mehrere Zeilenumbrüche, die nur nicht zu sehen sind,

jetzt die Ausgabe verfeinern, dann wird das schon
 

bvdcomp

Aktives Mitglied
Irgendwie hänge ich nun. Ich komm nicht mehr weiter...

Logisch wäre für mich wenn ich in der While-Schleife den Aufruf so mache
Java:
zustand += studis[i].getAbstand();
getAbstand() -> \n" noch hinten reigehängt wird

Also eben, Wert von diesem Array + Zeilenumbruch

Was mache ich da falsch?
 
S

SlaterB

Gast
zustand += studis;
zustand += studis.getAbstand();


oder
zustand += studis + studis.getAbstand();
 

bvdcomp

Aktives Mitglied
Ohhhhhhhhhhhhhh man was ein + alles ausmachen kann.

Ich danke dir SltaerB viel mals.

Das eine Problem ist nun gelöst.

Nun werde ich am zweiten arbeiten.... und werde bestimmt hilfe brauchen.
 

bvdcomp

Aktives Mitglied
mir mal jemand einen Hinweis geben wieso mein Scroll nicht funkt:

Java:
    protected static JTextArea textArea;
             .....
        textArea = new JTextArea("Hier kommt die Ausgabe",10,20);
        textArea.setBorder(new EtchedBorder());
        textArea.setLineWrap(true);
        textArea.setEditable(false);

        JScrollPane scroller = new JScrollPane(textArea);
        scroller.setPreferredSize(new Dimension(450, 110));
        scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
               
        contentPane.add(textArea);

Ich sehe hier keinen Fehler;(
 

bvdcomp

Aktives Mitglied
Hat jemand von euch eine Idee wie ich folgendes machen kann:

Wie kann ich diese Objekte;
Java:
Student[] studis = {     
   new Student(1, "Walterli Tell junjun.", 12, 4.3),
   new Student(2, "Greengrey vonRotz", 20, 3.7),
   new Student(3, "Fritzli Schneider", 9, 5.9),
   new Student(4, "Archimedes Syrakus", 2296, 6.0),
   new Student(5, "Maria Stuart", 467, 2.9)
  };

einem String übergeben:

Java:
for (Student alle : studis) {    
    sortierterWert += studis/*[????]*/+ studis[i].getAbstand();
   }
 
S

SlaterB

Gast
wie zuvor, es hat sich noch nichts geändert:

zustand += studis + studis.getAbstand();

oder jetzt eben

sortierterWert += studis+ studis.getAbstand();

wenn studis nur kryptische Zahlen liefert, dann liegt das nach wie vor daran, dass keine toString()-Methode implementiert ist,

nach wie vor ist mein Vorschlag
sortierterWert += studis.getName()
oder so,
ein Zeilenumbruch \n kannst du auch hier direkt schreiben, das muss keine komplizierte Methode in Student sein:
sortierterWert += studis.getName() + "\n";

das Scroll-Problem noch aktuell? kann ich aber erst später testen
 

bvdcomp

Aktives Mitglied
ICh habe es nun so gemacht und es funktion:
Java:
  int t = 0;A
   for (Student alle : studis) {    
    sortierterWert += studis[t].toString()+ studis[t].getAbstand();
    t++;
   }
...
 }
 
S

SlaterB

Gast
ach das meinst du, das geht natürlich so:

Java:
 for (Student einer : studis) {    
    sortierterWert += einer.toString()+ einer.getAbstand();
   }
 

bvdcomp

Aktives Mitglied
Ja es, funkt nun. Aber das Problem mit den Scroll ist immer noch ....

ich sehe keinen Fehler

Java:
TitledBorder border = new TitledBorder("Positionieren");
        schieberegler.setBorder(new CompoundBorder(new EmptyBorder(1, 5, 5, 5), border));
        schieberegler.setMajorTickSpacing(5);
        contentPane.add(schieberegler, BorderLayout.SOUTH);
        
        textArea = new JTextArea("Hier kommt die Ausgabe",10,20);
        textArea.setBorder(new EtchedBorder());
        textArea.setLineWrap(true);
        textArea.setEditable(false);
        
        JScrollPane scroller = new JScrollPane(textArea);
        scroller.setPreferredSize(new Dimension(450, 110));
        scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
               
        contentPane.add(textArea);
 
S

SlaterB

Gast
Pech, nicht schon gestern gesehen, einfacher Fehler:
add(scroller);
statt
add(textArea);
 

bvdcomp

Aktives Mitglied
das funkt nun alles so wie es soll. Danke danke danke

Nun noch die letzte aufgabe

Ich möchte die ganze Ausgabe der Sortierung, step by step ausgeben lassen.

Ich habe dafür folgendes gemacht:

Java:
final JSlider schieberegler =new JSlider(JSlider.VERTICAL, 0, 100, 0);
        schieberegler.setPaintTicks(true);
        schieberegler.setMajorTickSpacing(25);
        schieberegler.setMinorTickSpacing(5);
        schieberegler.setPaintLabels(true);
        werkzeugleiste.add(schieberegler);
        ......   
        ......
        ......
        stepbystep = new JButton("Sortieren step by step");
        stepbystep.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { 
                            	   textArea.setText(Student.sortStepbyStep());}
                           });
        werkzeugleiste.add(stepbystep);          
            // Abstände: Werkzeugleiste in ein Extra-Panel mit Flow-Layout legen
        JPanel flow = new JPanel();
        flow.add(werkzeugleiste);
        contentPane.add(flow, BorderLayout.WEST);
        
        
        schieberegler.addChangeListener(new ChangeListener(){
            public void stateChanged(ChangeEvent e){
            	textArea.setText(Student.startSortieren()./*???*/);
            }
         });

Da hab ich leider keihe Ahnung wie ich es anstellen soll:bahnhof:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
B Swing Problem beim ActionListener AWT, Swing, JavaFX & SWT 5
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
I Swing Problem mit InputMap bei JButton (ActionListener) AWT, Swing, JavaFX & SWT 3
M AWT Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
partsch Swing Problem im ActionListener AWT, Swing, JavaFX & SWT 2
I Swing - Problem mit ActionListener (Programm bleibt stehen) AWT, Swing, JavaFX & SWT 2
S Problem beim implementerien von ActionListener AWT, Swing, JavaFX & SWT 4
A Problem mit einem ActionListener AWT, Swing, JavaFX & SWT 5
B ActionListener, Thread, JButton Problem AWT, Swing, JavaFX & SWT 2
S Problem mit ActionListener AWT, Swing, JavaFX & SWT 12
M Konkretes Problem mit ActionListener AWT, Swing, JavaFX & SWT 3
L Problem mit ActionListener, ChildFrame und JButton AWT, Swing, JavaFX & SWT 3
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
N Swing Problem mit loop AWT, Swing, JavaFX & SWT 2
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Swing Splitpane Problem AWT, Swing, JavaFX & SWT 1
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
N JavaFX Stranges Problem mit der Autoscroll-Eigenschaft von Textareas AWT, Swing, JavaFX & SWT 0
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
J JavaFX Intersect Problem mit Shapes AWT, Swing, JavaFX & SWT 10
R JavaFX MediaPlayer AVI-Problem AWT, Swing, JavaFX & SWT 1
M Swing Problem mit ListCellRenderer AWT, Swing, JavaFX & SWT 7
D Problem mit JTable AWT, Swing, JavaFX & SWT 1
F GUI Auflösung ändern - Koordianten und Proportions Problem AWT, Swing, JavaFX & SWT 21
J Problem mit Button darstellung AWT, Swing, JavaFX & SWT 23
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Problem mit Variablen AWT, Swing, JavaFX & SWT 4
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
M Swing AttributiveCellTableModel addRow() Problem AWT, Swing, JavaFX & SWT 1
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
K CheckBox Problem AWT, Swing, JavaFX & SWT 5
Grevak DisplayMode Problem seit Windows 10 AWT, Swing, JavaFX & SWT 2
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
B Swing Problem mit Bildpfad AWT, Swing, JavaFX & SWT 4
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
C AWT Problem mit Protokol Fenster AWT, Swing, JavaFX & SWT 0
M Swing pack() Problem mit Taskleiste AWT, Swing, JavaFX & SWT 4
N Swing Choice- Problem! AWT, Swing, JavaFX & SWT 8
Q "AWT-EventQueue-0" Exception Problem AWT, Swing, JavaFX & SWT 4
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
P AWT Problem mit Platzierung (GridBagLayout) AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
A Mini-Menu-Schriften. Ein Problem bei hohen DPI Zahlen AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
C Thread-/ Simulations- Problem AWT, Swing, JavaFX & SWT 18
G Swing Setvisible problem AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben