Objekt in "actionPerformed" erzeugen und nutzen

Status
Nicht offen für weitere Antworten.

BlueDolphin

Mitglied
Hallo, ich habe eine doppelt verkettete Liste implementiert und möchte diese nun mit einem einfachen Gui testen, d.h. mit einem Klick auf den Button "Create" eine Liste erzeugen, mit "Insert" Elemente über eine Textfeld einfügen, etc.

Mein Problem ist nun, dass ich das Objekt ja erst bei dem Klick auf "Create" erzeuge, in anderen if-Abfragen in der actionPerfomed-Methode aber mit dem Objekt ("test") arbeite, indem ich z.B. die insert()-Methode etc aufrufe?
Wie kann ich das Problem lösen, wenn ich das Objekt per Button erzeugen möchte und nicht vorher?? Hab schon versucht die if-Abfragen für die Buttons zu schachteln, aber das funktioniert auch nicht.

Mein Code:

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Student { 

   public class Student_Node {
   	
    String name; 
    int matr_nr; 
      
    Student_Node prev; // vorheriges Element 
    Student_Node next; // naechstes Element
       
    Student_Node(String name, int matrikelnummer) {
    	
    	 this.name = name; 
    	 this.matr_nr = matrikelnummer; 
      
    }
    } 
    
   Student_Node first;
   Student_Node last;
    
    
   // neues Element (Knoten) in die Liste einfuegen ----------------------------
   
   void insert(String name, int matr_nr) {
   	 
   	 // Erzeugen eines neuen Knotens 
   	 Student_Node studi = new Student_Node(name,matr_nr);
   	 
   	 // falls Liste leer
   	 if (first == null) {
   	 	
   	 	studi.prev = studi;
   	 	studi.next = null;
   	 	first = studi;
   	 }
   	 
   	 else {
   	 
   	 studi.next = first;
   	 
   	 if (first != null) {
   	 		
    	first.prev = studi;
   	 	
   	 	}
   	 	
   	 first = studi;
     studi.prev = last;
   	 
   	 }
   }
   
   
   // Element aus Liste loeschen -----------------------------------------------
   
   void delete(int matr_nr) {
   	
    Student_Node temp = first; 
     
     while (temp != null) {
         
         if (temp.matr_nr == matr_nr) { 
              	
               //wenn temp nicht erstes Element	
			   if (temp.prev != null) {
   		
   					(temp.prev).next = temp.next;
   					
   			   }
   			   else {
   					
   					//wenn temp erstes Element
   					first = temp.next;
   			   }
   				
   			   //wenn temp nicht letztes Element		
   			   if (temp.next != null) {
   		
   					(temp.next).prev = temp.prev;
   			   } 
         } 
         
         temp = temp.next; 
     }  	
   }
   
   
   // Studenten nach Matrikelnummer suchen -------------------------------------
   
   void search(int matr_nr) {
   	
   	Student_Node temp = first;
   	boolean found = false;
   	
   	// gesuchtes Element = erstes Element ? ...
   	if (temp.matr_nr == matr_nr) {
   		
  		found = true;
   	}
   	// ...falls nicht laufe durch Liste
 	while (temp.next != null && temp.matr_nr != matr_nr) {

   		
   		if (temp.next != null) {
   		
            temp = temp.next;      
   		}
   		
   		if (temp.matr_nr == matr_nr) {
   			
   			found = true;
   		}

    }
    
    if (found == true) {
    	
    	System.out.println("Folgender Student wurde gefunden: " + temp.name);
 	}
    else {
    	
    	System.out.println("Die Liste enthaelt keinen Studenten mit der Matrikelnummer " + matr_nr); 
    }
   }
  
  
   // Ausgabe der gesamten Liste (iterativ) ------------------------------------
   
   void print_iterativ() {	 
  		
  	while(temp != null) {
  		
  	    System.out.println(temp.matr_nr/* + " - " +temp.name*/);
  		temp = temp.next;
  	 }
   }
   
}

class Gui extends JFrame implements ActionListener { 
    
   JPanel panel1; 
   JPanel panel2; 
   JPanel panel3;
   JPanel panel4; 
   JButton create; 
   JTextField create_txt; 
   JButton insert_front;
   JTextField insert_front_matr;
   JTextField insert_front_name;
   JButton delete;
   JTextField delete_txt;
   JButton show;
    
   public Gui() { 
      
      super("Doppelt verkettete Liste");
       
      panel1 = new JPanel(); 
      panel2 = new JPanel(); 
      panel3 = new JPanel();
      panel4 = new JPanel(); 
       
      create = new JButton("Create");
      create.addActionListener(this);
      insert_front = new JButton("Insert (front)");
      insert_front.addActionListener(this);
      delete = new JButton("Delete");
      delete.addActionListener(this);
      show = new JButton("Show");
      show.addActionListener(this);
	   
       
      create_txt = new JTextField(5); 
      insert_front_matr = new JTextField(5);
      insert_front_name = new JTextField(20);
      delete_txt = new JTextField(5);  
       
      panel1.add(create_txt);
      panel1.add(create);
       
      panel2.add(insert_front_matr);
      panel2.add(insert_front_name); 
      panel2.add(insert_front); 
      
      panel3.add(delete_txt); 
      panel3.add(delete);
      
      panel4.add(show);
      
 	  setLayout(new GridLayout(4, 1));
 	  add(panel1);
 	  add(panel2);
 	  add(panel3);
 	  add(panel4);
 	  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setVisible(true);	
 	
   }
   
   public void actionPerformed(ActionEvent event) {
 			
 		String cmd = event.getActionCommand();
 		
		if (cmd.equals("Create")) {
 			
 			Student test = new Student();
 			System.out.println("Liste erstellt");
 		}
 		
 		if (cmd.equals("Insert (front)")) {
 			
 			int m = Integer.parseInt(insert_front_matr.getText());
 			String n = insert_front_name.getText();
 			
 			System.out.println("Element eingefuegt");	
 			test.insert(n,m);
 		}
 		
 		if (cmd.equals("Show")) {
 			
 			System.out.println("Ausgabe der Liste");
 			test.print_iterativ();
 		}
 		
 		
 	}
 	
 	public static void main (String[] args) {
 	
 		Gui test = new Gui();
 		test.setLocation(310,200); 
   		test.setVisible(true);
   		test.setSize(600,600);
   		test.pack(); 
 		
 	}
}
 

mayer

Aktives Mitglied
Du schreibst oben bei den Membervariablen von der Klasse Gui, d.h nach JButton show; einfach private Student test;
Und in der if-Abfrage schreibst du dann einfach

Code:
if (cmd.equals("Create")) {
     test = new Student();
     System.out.println("Liste erstellt");
}


Somit kannst du test in der gesamten Klasse verwenden.

mfg manuel
 

André Uhres

Top Contributor
Code:
//package schnipsel;
/*
 * Gui2.java
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Gui2 extends JFrame implements ActionListener {
    private Student test;
    private JPanel panel1;
    private JPanel panel2;
    private JPanel panel3;
    private JPanel panel4;
    private JButton create;
    private JTextField create_txt;
    private JButton insert_front;
    private JTextField insert_front_matr;
    private JTextField insert_front_name;
    private JButton delete;
    private JTextField delete_txt;
    private JButton show;
    public Gui2() {
        super("Doppelt verkettete Liste");
        panel1 = new JPanel();
        panel2 = new JPanel();
        panel3 = new JPanel();
        panel4 = new JPanel();
        create = new JButton("Create");
        create.addActionListener(this);
        insert_front = new JButton("Insert (front)");
        insert_front.addActionListener(this);
        delete = new JButton("Delete");
        delete.addActionListener(this);
        show = new JButton("Show");
        show.addActionListener(this);
        create_txt = new JTextField(5);
        insert_front_matr = new JTextField(5);
        insert_front_name = new JTextField(20);
        delete_txt = new JTextField(5);
        panel1.add(create_txt);
        panel1.add(create);
        panel2.add(insert_front_matr);
        panel2.add(insert_front_name);
        panel2.add(insert_front);
        panel3.add(delete_txt);
        panel3.add(delete);
        panel4.add(show);
        setLayout(new GridLayout(4, 1));
        add(panel1);
        add(panel2);
        add(panel3);
        add(panel4);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
    public void actionPerformed(final ActionEvent event) {
        String cmd = event.getActionCommand();
        if (cmd.equals("Create")) {
            test = new Student();
            System.out.println("Liste erstellt");
        }
        if (cmd.equals("Insert (front)")) {
            int m = Integer.parseInt(insert_front_matr.getText());
            String n = insert_front_name.getText();
            System.out.println("Element eingefuegt");
            test.insert(n,m);
        }
        if (cmd.equals("Show")) {
            System.out.println("Ausgabe der Liste");
            test.print_iterativ();
        }
    }
    public static void main(final String[] args) {
        Gui2 test = new Gui2();
        test.setLocation(310,200);
        test.setVisible(true);
        test.setSize(600,600);
        test.pack();
    }
}
class Student {
    private Student_Node first;
    private Student_Node last;
    public class Student_Node {
        String name;
        int matr_nr;
        Student_Node prev; // vorheriges Element
        Student_Node next; // naechstes Element
        Student_Node(String name, int matrikelnummer) {
            this.name = name;
            this.matr_nr = matrikelnummer;
        }
    }
    // neues Element (Knoten) in die Liste einfuegen ----------------------------
    public void insert(final String name, final int matr_nr) {
        // Erzeugen eines neuen Knotens
        Student_Node studi = new Student_Node(name,matr_nr);
        // falls Liste leer
        if (first == null) {
            studi.prev = studi;
            studi.next = null;
            first = studi;
        } else {
            studi.next = first;
            if (first != null) {
                first.prev = studi;
            }
            first = studi;
            studi.prev = last;
        }
    }
    // Element aus Liste loeschen -----------------------------------------------
    public  void delete(final int matr_nr) {
        Student_Node temp = first;
        while (temp != null) {
            if (temp.matr_nr == matr_nr) {
                //wenn temp nicht erstes Element
                if (temp.prev != null) {
                    (temp.prev).next = temp.next;
                } else {
                    //wenn temp erstes Element
                    first = temp.next;
                }
                //wenn temp nicht letztes Element
                if (temp.next != null) {
                    (temp.next).prev = temp.prev;
                }
            }
            temp = temp.next;
        }
    }
    // Studenten nach Matrikelnummer suchen -------------------------------------
    public void search(final int matr_nr) {
        Student_Node temp = first;
        boolean found = false;
        // gesuchtes Element = erstes Element ? ...
        if (temp.matr_nr == matr_nr) {
            found = true;
        }
        // ...falls nicht laufe durch Liste
        while (temp.next != null && temp.matr_nr != matr_nr) {
            if (temp.next != null) {
                temp = temp.next;
            }
            if (temp.matr_nr == matr_nr) {
                found = true;
            }
        }
        if (found == true) {
            System.out.println("Folgender Student wurde gefunden: " + temp.name);
        } else {
            System.out.println("Die Liste enthaelt keinen Studenten mit der Matrikelnummer " + matr_nr);
        }
    }
    // Ausgabe der gesamten Liste (iterativ) ------------------------------------
    public void print_iterativ() {
        Student_Node temp = first;
        while(temp != null) {
            System.out.println(temp.matr_nr/* + " - " +temp.name*/);
            temp = temp.next;
        }
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B actionPerformed reagiert nicht auf das Canvas-objekt AWT, Swing, JavaFX & SWT 11
G Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
B mit maus Objekt bewegen AWT, Swing, JavaFX & SWT 3
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
U Was genau ist ein Shape-Objekt? AWT, Swing, JavaFX & SWT 3
DonBronson Objekt bewegen (Mausposition) AWT, Swing, JavaFX & SWT 3
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
U Was ist ein Shape, also klar ein Objekt, aber was ist damit gemeint (Graphics2d)? Und was sidn affinetransformationen AWT, Swing, JavaFX & SWT 1
Jose05 zugreifen auf ein Objekt eines GridPanes AWT, Swing, JavaFX & SWT 0
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
C Objekt an paintComponent weitergeben AWT, Swing, JavaFX & SWT 1
M Swing Objekt Array in GUI ausgeben AWT, Swing, JavaFX & SWT 1
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
F Java FX Von der Fxml Datei zum Objekt AWT, Swing, JavaFX & SWT 8
M Swing Durch Usereingabe neues Objekt AWT, Swing, JavaFX & SWT 2
K Color-Objekt erzeugen in CMYK AWT, Swing, JavaFX & SWT 2
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
A Swing Null Pointer Exception obwohl Objekt initialisiert AWT, Swing, JavaFX & SWT 21
J gezeichnetes Objekt anklicken AWT, Swing, JavaFX & SWT 10
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
L JavaFX als eigenes Objekt AWT, Swing, JavaFX & SWT 3
M [JavaFX] Objekt um Zentrum rotieren (Camera) AWT, Swing, JavaFX & SWT 1
E JavaFx Screne mehr als ein "Objekt" zuordnen ? AWT, Swing, JavaFX & SWT 2
F 2D-Grafik Objekt durch Einwirkung einer Kraft im Raum bewegen AWT, Swing, JavaFX & SWT 14
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
B Event Handling MouseListener Behält seine Variablen, auch wenn ich ein neus Objekt erstelle AWT, Swing, JavaFX & SWT 2
C Graphics Objekt in Zeitschleife zeichnen AWT, Swing, JavaFX & SWT 4
P Event Handling Anfängerfrage: ActionEvent bekommt kein Zugriff auf Objekt AWT, Swing, JavaFX & SWT 3
R Array aus einem Objekt auslesen AWT, Swing, JavaFX & SWT 4
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
A AWT TTF-Datei zu Font-Objekt finden? AWT, Swing, JavaFX & SWT 5
S Objekt durch Tasteneingabe mehrmals drehen AWT, Swing, JavaFX & SWT 9
E Swing Objekt zu Position (Point) bewegen AWT, Swing, JavaFX & SWT 2
T 3D-Grafik (Java3D) Aus einem Objekt einer Szene (Würfel, Ebene) die wichtigen Randkoordinaten auslesen AWT, Swing, JavaFX & SWT 3
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
V Persistentes Objekt laden Progressbar AWT, Swing, JavaFX & SWT 7
F Canvas Objekt außerhalb des Frames zeichnen AWT, Swing, JavaFX & SWT 3
Furtano AWT paint braucht ein Graphics Objekt ? AWT, Swing, JavaFX & SWT 2
propra Schnittpunkt zwischen Objekt und Kante finden AWT, Swing, JavaFX & SWT 24
L Graphics Objekt - aus anderer Klasse aufrufen / übergeben AWT, Swing, JavaFX & SWT 5
S Objekt einmal laden zweimal anzeigen 3d AWT, Swing, JavaFX & SWT 6
I Swing Zugriff auf ein Objekt AWT, Swing, JavaFX & SWT 2
F Nur ein Objekt auf Canvas neu zeichnen AWT, Swing, JavaFX & SWT 4
R Möglichkeiten ein abgeleitetes Objekt zu erzeugen AWT, Swing, JavaFX & SWT 4
P Swing Wie bekomme ich eine Referenz auf ein Objekt das im EDT erzeugt wird? Und anderes... AWT, Swing, JavaFX & SWT 8
T Objekt in Kreisbahn bewegen AWT, Swing, JavaFX & SWT 5
B Zeichnen von Bildern auf JPanel aus eigenem Objekt AWT, Swing, JavaFX & SWT 19
V Parameter an Runnable-Objekt übergeben AWT, Swing, JavaFX & SWT 6
Dit_ Objekt mit ActionEvent übergeben AWT, Swing, JavaFX & SWT 2
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
L Swing Auf unabhängiges Image-Objekt zeichnen AWT, Swing, JavaFX & SWT 8
A SWT SWT - Unbekannte Fläche (Objekt) erscheint im Composite AWT, Swing, JavaFX & SWT 6
D Objekt mit Button erstellen und mit anderem Button verwenden AWT, Swing, JavaFX & SWT 4
P Objekt kopieren AWT, Swing, JavaFX & SWT 2
M Graphics-Objekt aktualisiert sich nicht AWT, Swing, JavaFX & SWT 2
U [MVC] Objekt bearbeiten AWT, Swing, JavaFX & SWT 9
O Swing JTable Colum Objekt AWT, Swing, JavaFX & SWT 6
Dit_ Ein Kreis als Graphics2D oder als Ellipse2D Objekt AWT, Swing, JavaFX & SWT 19
M Objekt im ActionListener ansprechen AWT, Swing, JavaFX & SWT 3
C Wie komme ich an ein Objekt aus einem JTree? AWT, Swing, JavaFX & SWT 10
R FlowLayout: 1 Objekt pro Zeile AWT, Swing, JavaFX & SWT 5
D Objekt (Map) in Textfeld ausgeben AWT, Swing, JavaFX & SWT 10
kirchrath Swing Aus ActionEvent Objekt herausfinden auf dem er ausgeführt wurde AWT, Swing, JavaFX & SWT 4
E Graphics2D: altes Objekt löschen, wenn repaint aufgerufen wird AWT, Swing, JavaFX & SWT 7
S Objekt wird während Endlosschleife nur einmal bewegt AWT, Swing, JavaFX & SWT 2
W Objekt-array als Raster visualisieren AWT, Swing, JavaFX & SWT 3
F Herausfinden, auf welchem Objekt der Fokus liegt AWT, Swing, JavaFX & SWT 2
G Tooltip Text für ein Shape Objekt AWT, Swing, JavaFX & SWT 2
D DnD ganzer Objekte(Objekt erstellen) AWT, Swing, JavaFX & SWT 2
G Wie ziehe ich ein Objekt aus einer JList? AWT, Swing, JavaFX & SWT 7
O JTable mit objekt-daten füllen AWT, Swing, JavaFX & SWT 4
B in jList feld aus einem objekt anzeigen AWT, Swing, JavaFX & SWT 2
R SWT color Objekt AWT, Swing, JavaFX & SWT 4
K Graphics-Objekt zeichnet nicht alle Bilder AWT, Swing, JavaFX & SWT 3
N Graphics Objekt "puffern" AWT, Swing, JavaFX & SWT 7
L Objekt in JComboBox einfügen AWT, Swing, JavaFX & SWT 2
S JComboBox, ein Renderer und das selektierte Objekt AWT, Swing, JavaFX & SWT 4
R Graphics Objekt ändern AWT, Swing, JavaFX & SWT 11
J DocumentListener uebergibt Objekt; wie in JTextfield casten? AWT, Swing, JavaFX & SWT 3
P JSpinner Objekt anstatt Zahlen sollen man Namen auswählen AWT, Swing, JavaFX & SWT 2
B Ein Image Objekt drehen? AWT, Swing, JavaFX & SWT 2
G Referenz über MenuItem aus ActionListener auf das Objekt AWT, Swing, JavaFX & SWT 8
lin Welches Objekt für einen About-Dialog verwenden? AWT, Swing, JavaFX & SWT 2
R Selectable Graphics Objekt gesucht. AWT, Swing, JavaFX & SWT 5
Wildcard FontMetrics ohne Graphics-Objekt AWT, Swing, JavaFX & SWT 13
S objekt kann methode der aufrufenden klasse nicht aufrufen AWT, Swing, JavaFX & SWT 2
Y Objekt in JFrame AWT, Swing, JavaFX & SWT 3
M Objekt in TableCellRenderer packen, warum ein Fehler? AWT, Swing, JavaFX & SWT 2
K Objekt in eine bestimmte Zelle eines JTables legen AWT, Swing, JavaFX & SWT 3
D getResource() bei Image-Objekt AWT, Swing, JavaFX & SWT 9
A Problem mit dem graphics-Objekt AWT, Swing, JavaFX & SWT 8
D in neues Image-Objekt zeichnen AWT, Swing, JavaFX & SWT 3
E warum erkennt er das objekt nicht???? AWT, Swing, JavaFX & SWT 4
G Fehler bei BasicStroke Objekt AWT, Swing, JavaFX & SWT 2
G Zurgriff auf Objekt über event.getComponent AWT, Swing, JavaFX & SWT 3
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben