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:
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();
}
}