Benutzerverwaltung mit GUI

M

murloc0815

Gast
Hallo,

wir müssen in der Berufsschule ein Programmierprojekt machen. Wir sollten den Quellcode für das Programm und für die GUI seperat schreiben und dann zusammenfügen. Beides getrennt funktioniert. Aber ich habe Probleme beim zusammensetzen.

Wir sind FISI´s und daher sind unsere Programmierkenntnisse eher bescheiden....

Folgendes versuchen wir zu programmieren:

Eine Benutzerverwaltung mit der man neue Benutzer anlegen kann, Benutzer löschen und natürlich anschauen kann.

Das Problem ist momentan, dass meine Auswahlvariable (welchen Datensatz ich bearbeiten möchte) nicht von dem JButton ausgelesen oder beschrieben werden kann. Wenn ich im JBUTTON eine Zuweisung machen will, sagt er immer wieder, dass er die Variable nicht kennt. Ich blicke selbst im Programm langsam nicht mehr durch, weil die GUI mithilfe eines WYSIWYG Tools in JavaEditor erstellt wurde (Auf Anweisung des Lehrers.

Vielleicht blickt ja jem durch der sich damit normalerweise mehr beschäftigt als wir.

Java:
/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 02.05.2012
  * @ 
  */
//Imports
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import Prog1Tools.IOTools; 
import java.io.*;
//Imports



public class Benutzerverwaltung_ADS extends JFrame 
{  
	
	
  // Anfang Attribute
  private JLabel Programmname = new JLabel();
  private JList Ausgabe = new JList();
    private DefaultListModel AusgabeModel = new DefaultListModel();
    private JScrollPane AusgabeScrollPane = new JScrollPane(Ausgabe);
  private JButton Waehlen = new JButton();
  private JButton Eingeben = new JButton();
  private JButton Ausgeben = new JButton();
  private JButton alle_ausgeben = new JButton();
  private JButton daten_loeschen = new JButton();
  private JButton Exit = new JButton();
  private JTextField eingabe = new JTextField();
  private JTextField vorgabe = new JTextField();
  // Ende Attribute

  public Benutzerverwaltung_ADS(String title) {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    setSize(d.width, d.height);
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(true);
    Container cp = getContentPane();
    cp.setLayout(null);

    //neu Anfang
    

    Benutzer[] verwalt = new Benutzer[1000];


         for (int i=0; i<=(100-1); i++)
         {
          verwalt[i] = new Benutzer();

         }
         
         
    //TODO
    //neu Ende
    
    // Anfang Komponenten

    Programmname.setText("Benutzerverwaltung");
    Programmname.setBounds(408, 0, 693, 129);
    Programmname.setFont(new Font("Arial", Font.BOLD, 72));
    Programmname.setHorizontalAlignment(SwingConstants.CENTER);
    Programmname.setHorizontalTextPosition(SwingConstants.CENTER);
    cp.add(Programmname);
    Programmname.setBounds(((d.width-Programmname.getWidth())/2), 0, 693, 129);
    setUndecorated(false);
    Ausgabe.setModel(AusgabeModel);
    AusgabeScrollPane.setBounds(256, 384, 1065, 450);
    Ausgabe.setLayoutOrientation(JList.VERTICAL);
    AusgabeScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    Ausgabe.addListSelectionListener(new ListSelectionListener() { 
      public void valueChanged(ListSelectionEvent evt) { 
        Ausgabe_ValueChanged(evt);
      }
    });
    cp.add(AusgabeScrollPane);
    AusgabeScrollPane.setBounds(((d.width-AusgabeScrollPane.getWidth())/2),384,1065,d.height-600);
    AusgabeScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

    Waehlen.setBounds(((d.width-AusgabeScrollPane.getWidth())/2), 312, 161, 49);
    Waehlen.setText("Datensatz wählen");
    Waehlen.setMargin(new Insets(2, 2, 2, 2));
    Waehlen.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) { 
        Waehlen_ActionPerformed(evt);
      }
    });
    cp.add(Waehlen);
    
    Eingeben.setBounds((((d.width-AusgabeScrollPane.getWidth())/2)+200), 312, 161, 49);
    Eingeben.setText("Datensatz eingeben");
    Eingeben.setMargin(new Insets(2, 2, 2, 2));
    Eingeben.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        Eingeben_ActionPerformed(evt);
      }
    });
    cp.add(Eingeben);
    
    Ausgeben.setBounds((((d.width-AusgabeScrollPane.getWidth())/2)+400), 312, 161, 49);
    Ausgeben.setText("Datensatz ausgeben");
    Ausgeben.setMargin(new Insets(2, 2, 2, 2));
    Ausgeben.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        Ausgeben_ActionPerformed(evt);
      }
    });
    cp.add(Ausgeben);
    
    alle_ausgeben.setBounds((((d.width-AusgabeScrollPane.getWidth())/2)+600), 312, 161, 49);
    alle_ausgeben.setText("Alle Datensätze ausgeben");
    alle_ausgeben.setMargin(new Insets(2, 2, 2, 2));
    alle_ausgeben.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        alle_ausgeben_ActionPerformed(evt);
      }
    });
    cp.add(alle_ausgeben);
    
    daten_loeschen.setBounds((((d.width-AusgabeScrollPane.getWidth())/2)+800), 312, 161, 49);
    daten_loeschen.setText("Alle Datensätze löschen");
    daten_loeschen.setMargin(new Insets(2, 2, 2, 2));
    daten_loeschen.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        daten_loeschen_ActionPerformed(evt);
      }
    });
    cp.add(daten_loeschen);
    
    Exit.setBounds(d.width-Exit.getWidth()-150, d.height-Exit.getHeight()-150, 89, 65);
    Exit.setText("Exit");
    Exit.setMargin(new Insets(2, 2, 2, 2));
    Exit.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        Exit_ActionPerformed(evt);
      }
    });
    cp.add(Exit);
    

    
    vorgabe.setFont(new Font("Arial", Font.PLAIN, 28));
    vorgabe.setBounds(((d.width-AusgabeScrollPane.getWidth())/2), 216, 201, 57);
    vorgabe.setEditable(false);
    cp.add(vorgabe);
    
    
    eingabe.setBounds((((d.width-AusgabeScrollPane.getWidth())/2)+300), 216, 833, 57);
    eingabe.setFont(new Font("Arial", Font.PLAIN, 28));
    cp.add(eingabe);
    
    setVisible(true);
  }
  // Ende Komponenten
  
//neu Anfang
  public class Benutzer 
  {
  	     public int index=0;
  	
  	     // Benutzerdaten
  	     public String Name;
  	     public String Vorname;
  	     public String Benutzername;
  	     public String Abteilung;
  	     public String PCServer;
  	     public int Telefonnummer;
  	     public String Lizensen;
  	     
  	     //Firmendaten
  	     public String Firmenname;
  	     public String Anschrift;
  	     public int Telefon;
  	     
  	     //PCdaten
  	     public String Hersteller;
  	     public String OS;
  }
  
  //neu Ende
  // Anfang Methoden
  public void Ausgabe_ValueChanged(ListSelectionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  public void Waehlen_ActionPerformed(ActionEvent evt, int index) {
    
	  index=0;
  }

  public void Eingeben_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  public void Ausgeben_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  public void alle_ausgeben_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  public void daten_loeschen_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  public void Exit_ActionPerformed(ActionEvent evt) {
    System.exit(0);
  }
  
  // Ende Methoden

  public static void main(String[] args) 
  {
    new Benutzerverwaltung_ADS("Benutzerverwaltung_ADS");
    
    
  }

}
 

GUI-Programmer

Top Contributor
Ohne mir den Code durchgelesen zu haben: Ganz wichtig: Stichwort MVC; Alles was nicht GUI ist, braucht genügend Getter und Setter Methoden, sodass von der GUI aus (speziell: Controller) Werte vom Model geändert und abgefragt werden können; Evtl. ist es auch empfehlenswert mit Interfaces zu arbeiten.
 

turtle

Top Contributor
ich rate Dir, bevor wir das Programm näher untersuchen, es in eine Form zu bringen, die üblicherweise genommen wird.

Ich zähle mal einige Punkte auf:

  • Klassennamen beginnen mit eine Grossbuchstaben.
  • Variablen/Methoden beginnen mit einem Kleinbuchstaben (programmname statt Programmname)
  • Statt Underscores wird häufig mixed camel case Schreibweise genommen (alleAusgeben statt alle_ausgeben)
Weiterhin solltest Du einen Layout-Manager verwenden (z.B. jGoodies) und NICHT null-Layout!!!

Danach würde ich mir an Deiner Stelle eine kleine Anzahl von Benutzern beim Start erzeugen, damit ohne mühsam Benutzer anzulegen sofort getestet werden kann.

Danach schaue ich gerne noch mal das Programm genauer an ;-)
 

Oben