Java GUI Erstellung mit NetBeans, ArrayList

Status
Für weitere Antworten geschlossen.

Hardbass1989

Cadet 3rd Year
Registriert
Mai 2009
Beiträge
50
Hallo CB-Community,

für die Berufsschule habe ich derzeit eine Übungsaufgabe zum erstellen von GUI-Oberflächen, an der ich nicht weiterkomme.

Arbeiten tue ich mit den Programmen BlueJ (Javaklassen erzeugen) und Netbeans (Gui)

Aufgabe:
Ein Programm erstellen welches
- den Namen eines Mitarbeiters aufnimmt
- das Monatsgehalt eines Mitarbeiters erfasst
- das Jahresgehalt errechnet
- Darstellen aller eingetragenen Mitarbeiter und deren Gehalt in einer Liste
- Eingabe soll über eine Eingabemaske erfolgen
- In der Maske sollen sich die Eingabefelder "Mitarbeiter" und "Monatsgehalt" befinden
- Auch Buttons "Berechnen" "Liste ausgeben" und "Löschen" sollen vorhanden sein

Bisher habe ich folgenden Code
Code:
import java.util.ArrayList;
public class Jahresgehalt

{

    private String mitarbeiter;
    private double monatsgehalt;
    private ArrayList<Jahresgehalt> gehaelter;
    

    public Jahresgehalt(){
        gehaelter = new ArrayList<>();
}

    public void fuegeGehaltHinzu (Jahresgehalt einGehalt){
        gehaelter.add(einGehalt);
}

    public void auflisten(){
        for (int i=0; i<gehaelter.size(); ++i){
        System.out.println(gehaelter.get(i));
        }
}

    public Jahresgehalt (String mitarbeiter, double monatsgehalt){
    this.mitarbeiter = mitarbeiter;
    this.monatsgehalt = monatsgehalt;
    }
    
    public Jahresgehalt (double monatsgehalt){
    this.monatsgehalt = monatsgehalt;
    }

public double getGehalt(){
    return this.monatsgehalt;
}

public String getName(){
    return this.mitarbeiter;
}
    
public double getJahresgehalt(){
    double jahresgehalt = monatsgehalt*12;
    return jahresgehalt;
}

public void setGehalt(double monatsgehalt){
    this.monatsgehalt = monatsgehalt;
}

public String toString(){
    return "Mitarbeiter " +getName()+ " verdient " +getJahresgehalt()+ " EUR pro Jahr.";
}
}

Code:
public class NewJFrame extends javax.swing.JFrame {
    private Jahresgehalt JahresgehaltRechner;
    /**
     * Creates new form NewJFrame
     */
    public NewJFrame() {
        initComponents();

private void buttonBerechnenActionPerformed(java.awt.event.ActionEvent evt) {                                                
        panelJahresgehaltEinzeln.setVisible(true);
        panelJahresgehaltAlle.setVisible(true);
        try{
        double monatsgehalt = Double.parseDouble(txtMonatsgehalt.getText());
        
        this.JahresgehaltRechner = new Jahresgehalt(monatsgehalt);
        
        labelJahresgehalt.setText("Mitarbeiter "+txtMitarbeiter.getText()+" verdient " +String.valueOf(this.JahresgehaltRechner.getJahresgehalt())+ " EUR im Jahr.");
        }   
        catch(NumberFormatException nfe){
        labelJahresgehalt.setText("Fehlterhafte Eingabe!");
        txtMonatsgehalt.setText(" ");
        }
    }                                               

    private void formWindowOpened(java.awt.event.WindowEvent evt) {
        panelJahresgehaltEinzeln.setVisible(false);
        panelJahresgehaltAlle.setVisible(false);
    }

    private void buttonLöschenActionPerformed(java.awt.event.ActionEvent evt) {
        txtMonatsgehalt.setText(" ");
        txtMitarbeiter.setText(" ");
        panelJahresgehaltEinzeln.setVisible(false);
        panelJahresgehaltAlle.setVisible(false);
        labelJahresgehalt.setText(" ");
        labelJahresgehaltAlle.setText(" ");

Damit funktioniert der Button "Berechnen" und "Löschen" schon ganz gut.
Jetzt kommt aber mein Problem, ich weiß nicht wie ich die "Liste ausgeben" Funktion angehen soll.
Ich denke ich muss mit ArrayList arbeiten und meine Werte dort ablegen, aber ich weiß leider nicht wie.
Die ArrayList in der Javaklasse funktioniert soweit, nur die Verknüpfung mit meinem GUI bekomme ich nicht hin.


Ich hoffe mal das ist nicht zu speziell und ihr könnt mir weiterhelfen.
Danke schon mal vorab!

MFG
 
die frage, die ich mir stelle: warum heißt deine klasse jahresgehalt? ist jahresgehalt nicht ein attribut eines mitarbeiters? ich glaub, du kommst leichter mit der aufgabe klar, wenn du eine klasse mitarbeiter mit attributen name und monatsgehalt erstellst, darin eine funktion get/setJahresgehalt anlegst und den rest drum rum baust, d. h. einen belegschaft-container (z. B. als arraylist) erschaffst, der über die gui mit mitarbeitern gefüttert wird...nur mal so als erste anregung...
 
Ich denke dein Problem ist, dass du alles in die Klasse Jahresgehalt reinstecken willst. Das ein Jahresgehalt eines Mitarbeiter mehrere Jahresgehälter (unterschiedlicher?) Mitarbeiter haben kann erscheint mir seltsam. Du bräuchtest eher eine Verwaltungsklasse (z.B. "JahresgehaltRechner") die eine Liste mit Jahresgehaeltern und die die Methode auflisten() hat.
Für deine Liste musst du nur diese Methode etwas abändern, indem du statt System.out.println() den String in eine ArrayList hinzufügst und zurück gibst. Für die GUI gibt es z.B. JList, der du dein Array übergeben kannst.

Ansonsten:
- Beträge nicht mit double speichern, da dieser ungenau ist. Nimm long und speichere den Betrag als Cent. Für die Ausgabe musst du den natürlich entsprechend formatieren.
- Wenn du ein Textfeld löscht, schreibst du ein Leerzeichen rein. Hat das einen besonderen Grund?
 
erstmal danke für die Antworten.
Ich werde mal versuchen eure Tipps umzusetzen.

@darlis
Nein, hat keinen besonderen Grund das dort ein Leerzeichen ist. Hab ich einfach so von unserem Lehrer übernommen.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben