GUI- Allgemeines Problem (Bitte helfen)

anscash

Mitglied
Hi Community!
Ich habe ein Problem.
Ich habe eine Klasse mit GUI-Maske erstellt, in der Informationen über mehrere JFields gespeichert werden sollen und als Parameter für ein Objekt verwendet werden sollen, welches auch gleich erstellt werden soll.
Das klappt aber nicht so ganz

Java:
import javax.swing.*;

import java.awt.Dimension;
import java.awt.event.*;


public class Mitarbeiter_GUI extends JFrame implements ActionListener {

    JFrame mitarb = new JFrame();
    JTextField feld_name = new JTextField();
    JTextField feld_vorname = new JTextField();
    JTextField feld_adresse = new JTextField();
    JTextField feld_telefon = new JTextField();
    JTextField feld_email = new JTextField();
    JTextField feld_geburtstag = new JTextField();
    JTextField feld_entgelt = new JTextField();
    JTextField quali1 = new JTextField();
    JTextField quali2 = new JTextField();
    JTextField quali3 = new JTextField();
    JTextField quali4 = new JTextField();

    JCheckBox c_intern = new JCheckBox();
    JCheckBox c_extern = new JCheckBox();
    
    JButton save = new JButton();
    JButton abbort = new JButton();
    JButton match = new JButton();

    JLabel label_mitarbeiter = new JLabel();
    JLabel label_stelle = new JLabel();

    JLabel label1 = new JLabel();
    JLabel label2 = new JLabel();
    JLabel label3 = new JLabel();
    JLabel label4 = new JLabel();
    JLabel label5 = new JLabel();
    JLabel label6 = new JLabel();
    JLabel label7 = new JLabel();
    JLabel label8 = new JLabel();
    JLabel label9 = new JLabel();
    JLabel labelquali1 = new JLabel();
    JLabel labelquali2 = new JLabel();
    JLabel labelquali3 = new JLabel();
    
    Dimension dm = new Dimension(1120, 750);
    
    JTextField feld_projektname = new JTextField();
    JTextField feld_projektinhalt = new JTextField();
    JTextField feld_stellenbudget = new JTextField();
    JTextField feld_projektrolle = new JTextField();
    JTextField feld_dauer = new JTextField();
    JTextField quali5 = new JTextField();
    JTextField quali6 = new JTextField();
    JTextField quali7 = new JTextField();
    JTextField quali8 = new JTextField();
    
    JButton save2 = new JButton();
    JButton abbort2 = new JButton();
    JButton match2 = new JButton();


    JLabel label10 = new JLabel();
    JLabel label11 = new JLabel();
    JLabel label12 = new JLabel();
    JLabel label13 = new JLabel();
    JLabel label14 = new JLabel();
    JLabel labelquali4 = new JLabel();
    JLabel labelquali5 = new JLabel();
    JLabel labelquali6 = new JLabel();
    
    
    public void initComponents() {
        
        mitarb.setTitle("Skillplan");
        mitarb.setLayout(null);
        mitarb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        feld_name.setPreferredSize(new Dimension(100,20));
        feld_vorname.setPreferredSize(new Dimension(100,20));
        feld_adresse.setPreferredSize(new Dimension(100,20));
        feld_telefon.setPreferredSize(new Dimension(100,20));
        feld_email.setPreferredSize(new Dimension(100,20));
        feld_geburtstag.setPreferredSize(new Dimension(100,20));
        feld_entgelt.setPreferredSize(new Dimension(100,20));
        
        quali1.setPreferredSize(new Dimension(100,20));
        quali2.setPreferredSize(new Dimension(100,20));
        quali3.setPreferredSize(new Dimension(100,20));
        quali4.setPreferredSize(new Dimension(100,20));


        save.setText("Mitarbeiter speichern");
        abbort.setText("Abbrechen");
        match.setText("Match");
        mitarb.add(save);
        mitarb.add(abbort);    
        mitarb.add(match);    

        
        save.addActionListener(this);
        abbort.addActionListener(this);
        match.addActionListener(this);

        
        save.setActionCommand("speichern");
        abbort.setActionCommand("abbrechen");
        match.setActionCommand("match");

        
        
        mitarb.add(c_intern);
        mitarb.add(c_extern);
        
        label_mitarbeiter.setText("Mitarbeiter erstellen:");
        label_stelle.setText("Stelle anlegen:");

        mitarb.add(label_mitarbeiter);
        mitarb.add(label_stelle);
        
        label1.setText("Name");
        
        mitarb.add(label1);
        mitarb.add(feld_name);
    
        label2.setText("Vorname");

        mitarb.add(label2);
        mitarb.add(feld_vorname);
    
        label3.setText("Adresse");

        mitarb.add(label3);
        mitarb.add(feld_adresse);

        label4.setText("Telefonnummer");

        mitarb.add(label4);
        mitarb.add(feld_telefon);

        label5.setText("E-Mail");

        mitarb.add(label5);
        mitarb.add(feld_email);

        label6.setText("Geburtsdatum");

        mitarb.add(label6);
        mitarb.add(feld_geburtstag);

    
        label7.setText("Intern");

        mitarb.add(label7);
    
        label8.setText("Extern");
        mitarb.add(label8);
        //mitarb.setPreferredSize(dm);
        
        labelquali1.setText("Art des Hochschulabschlusses");
        labelquali2.setText("Fachgebiet");
        labelquali3.setText("Weitere Kompetenzen");

        mitarb.add(labelquali1);
        mitarb.add(quali1);
        mitarb.setPreferredSize(dm);
        mitarb.add(labelquali2);
        mitarb.add(quali2);
        mitarb.add(labelquali3);
        mitarb.add(quali3);
        mitarb.add(quali4);


        label9.setText("Entgelt");

        mitarb.add(label9);
        mitarb.add(feld_entgelt);
        int x =30;
        
        label_mitarbeiter.setBounds(50, x, 150, 20);x=x+70;
        

        
        label1.setBounds(50, x, 60, 20);
        feld_name.setBounds(250, x, 250, 20);
        x=x+30;
        label2.setBounds(50,x, 60, 20);
        feld_vorname.setBounds(250, x, 250, 20);
        x=x+30;
        label3.setBounds(50, x, 60, 20);
        feld_adresse.setBounds(250, x, 250, 20);x=x+30;
        label4.setBounds(50,x, 160, 20);
        feld_telefon.setBounds(250, x, 250, 20);x=x+30;
        label5.setBounds(50, x, 60, 20);
        feld_email.setBounds(250, x, 250, 20);x=x+30;
        label6.setBounds(50,x, 160, 20);
        feld_geburtstag.setBounds(250, x, 250, 20);x=x+50;        
        label7.setBounds(50, x, 60, 20);
        c_intern.setBounds(150, x, 20, 20);
        c_extern.setBounds(300, x, 20, 20);
        label8.setBounds(250,x, 160, 20);x=x+50;
        labelquali1.setBounds(50, x, 180, 20);
        quali1.setBounds(250, x, 250, 20);
        x=x+30;
        labelquali2.setBounds(50,x, 160, 20);
        quali2.setBounds(250, x, 250, 20);
        x=x+30;
        labelquali3.setBounds(50, x, 160, 20);
        quali3.setBounds(250, x, 250, 20);x=x+30;
        quali4.setBounds(250, x, 250, 20);x=x+50;
        label9.setBounds(50,x, 60, 20);
        feld_entgelt.setBounds(250, x, 150, 20);x=x+60;
        
        save.setBounds(50, x, 190, 25);x=x+75;
        match.setBounds(50, x, 100, 50);

        abbort.setBounds(200, x, 100, 50);
        
        
        mitarb.setVisible(true);
        mitarb.pack();
        
        
        
        
        
        
        
        
        
        feld_projektname.setPreferredSize(new Dimension(100,20));
        feld_projektinhalt.setPreferredSize(new Dimension(100,20));
        feld_stellenbudget.setPreferredSize(new Dimension(100,20));
        feld_projektrolle.setPreferredSize(new Dimension(100,20));
        feld_dauer.setPreferredSize(new Dimension(100,20));

        quali5.setPreferredSize(new Dimension(100,20));
        quali6.setPreferredSize(new Dimension(100,20));
        quali7.setPreferredSize(new Dimension(100,20));
        quali8.setPreferredSize(new Dimension(100,20));


        save2.setText("Stelle anlegen");
        mitarb.add(save2);

        
        save.addActionListener(this);
        abbort.addActionListener(this);
        match.addActionListener(this);

        
        save.setActionCommand("speichern");
        abbort.setActionCommand("abbrechen");
        match.setActionCommand("match");

        
        
        label10.setText("Projektname");
        
        mitarb.add(label10);
        mitarb.add(feld_projektname);
    
        label11.setText("Projektinhalt");

        mitarb.add(label11);
        mitarb.add(feld_projektinhalt);
    
        label12.setText("Stellenbudget");

        mitarb.add(label12);
        mitarb.add(feld_stellenbudget);

        label13.setText("Projektrolle");

        mitarb.add(label13);
        mitarb.add(feld_projektrolle);

        label14.setText("Dauer");

        mitarb.add(label14);
        mitarb.add(feld_dauer);


        labelquali4.setText("Art des Hochschulabschlusses");
        labelquali5.setText("Fachgebiet");
        labelquali6.setText("Weitere Kompetenzen");

        mitarb.add(labelquali4);
        mitarb.add(quali5);
        mitarb.setPreferredSize(dm);
        mitarb.add(labelquali5);
        mitarb.add(quali6);
        mitarb.add(labelquali6);
        mitarb.add(quali7);
        mitarb.add(quali8);

        int x2 =30;
        
        label_stelle.setBounds(600, x2, 100, 20);x2=x2+70;
        
        label10.setBounds(600, x2, 160, 20);
        feld_projektname.setBounds(800, x2, 250, 20);
        x2=x2+30;
        label11.setBounds(600, x2, 160, 20);
        feld_projektinhalt.setBounds(800, x2, 250, 80);
        x2=x2+90;
        label12.setBounds(600, x2, 160, 20);
        feld_stellenbudget.setBounds(800, x2, 250, 20);x2=x2+30;
        label13.setBounds(600,x2, 160, 20);
        feld_projektrolle.setBounds(800, x2, 250, 20);x2=x2+30;
        label14.setBounds(600, x2, 60, 20);
        feld_dauer.setBounds(800, x2, 250, 20);x2=x2+50;
        labelquali4.setBounds(600, x2, 180, 20);
        quali5.setBounds(800, x2, 250, 20);
        x2=x2+30;
        labelquali5.setBounds(600,x2, 160, 20);
        quali6.setBounds(800, x2, 250, 20);
        x2=x2+30;
        labelquali6.setBounds(600, x2, 160, 20);
        quali7.setBounds(800, x2, 250, 20);x2=x2+30;
        quali8.setBounds(800, x2, 250, 20);x2=x2+50;
        
        save2.setBounds(600, x2, 150, 25);
        

    }
    
    int counter = 0;
    static String[][] Dimension = new String[15][];

    static String[] Mitarbeiterx = new String[11];
    
    public static String[] getM() {
        return Mitarbeiterx;
    }

    

    
    
    


    public void build() {
        
        Mitarbeiterx[0] = feld_name.getText();
        Mitarbeiterx[1] = feld_vorname.getText();
        Mitarbeiterx[2] = feld_adresse.getText();
        Mitarbeiterx[3] = feld_telefon.getText();
        Mitarbeiterx[4] = feld_email.getText();
        Mitarbeiterx[5] = feld_geburtstag.getText();
        Mitarbeiterx[6] = feld_entgelt.getText();
        Mitarbeiterx[7] = quali1.getText();
        Mitarbeiterx[8] = quali2.getText();
        Mitarbeiterx[9] = quali3.getText();
        Mitarbeiterx[10] = quali4.getText();
        
    }
    

    
    public void actionPerformed(ActionEvent event) {


        if ("speichern".equals(event.getActionCommand())) {
            
            build();
            
            feld_name.setText("");    
            feld_vorname.setText("");
            feld_adresse.setText("");
            feld_telefon.setText("");
            feld_email.setText("");
            feld_geburtstag.setText("");
            feld_entgelt.setText("");
            quali1.setText("");
            quali2.setText("");
            quali3.setText("");
            quali4.setText("");
            c_intern.setSelected(false);
            c_extern.setSelected(false);
            
        }
        
        
        
        if ("match".equals(event.getActionCommand())){
            
            for ( int i = 0; i<11; i++) {
                System.out.println(Mitarbeiterx[i]);
            }
            
        }
        
        if ("abbrechen".equals(event.getActionCommand())){
        mitarb.dispose();
        }
        
        
    }
    
    
    

}

Ich weiss, es ist sehr unelegant gelöst, aber die build() methode soll eben die JFields auslesen und ein Mitarbeiter-Objekt mit den Parametern ( Name, Vornameetc ) erstellen

Bitte helft mir!
 

InfectedBytes

Top Contributor
Wie wäre es, wenn du uns denn auch verrätst WAS nicht geht? Bzw. was du versucht hast usw.

Außerdem kennen wir deine "Mitarbeiter"-Klasse nicht.
 

Harry Kane

Top Contributor
Noch drei Kommentare von mir:
1. Mitarbeiter_GUI extends JFrame ist überflüssig. Du nutzt Mitarbeiter_GUI offenbar gar nicht als JFrame.
2. Bevor du aus zig Componenten die Informationen zu einem Mitarbeiter sammelst, versuchs erstmal mit zweien. Wenn das klappt und du verstanden hast wie es geht, kannst du gerne die Anzahl der Komponenten mit Mitarbeiterinformationen erhöhen.
3. verwende einen Layoutmanager.
 

anscash

Mitglied
Schonmal vielen Dank für die Aufmerksamkeit!

Hier vorab das Mitarbeiter-Skript:
Java:
import java.util.ArrayList;

public class Mitarbeiter {

    String status, name, vorname, adresse, telefon, email, geburtsdatum, entgelt;
    String[] qualifikationen;
    
    
    public Mitarbeiter(String name, String vorname) {
        this.name = name;
        this.vorname = vorname;
    }
    
    public Mitarbeiter (String status, String name, String vorname, String adresse, String telefon, String email, String geburtsdatum, String[] qualifikationen, String entgelt) {
        
        this.name = name;
        this.vorname = vorname;
        this.adresse = adresse;
        this.telefon = telefon;
        this.email = email;
        this.geburtsdatum = geburtsdatum;
        this.qualifikationen = qualifikationen;
        this.entgelt = entgelt;
        
    }
    
    String getName() {
        return name;
    }
    String getVorname() {
        return vorname;
    }
    String getAdresse() {
        return adresse;
    }
    String getTelefon() {
        return telefon;
    }
    String getEmail() {
        return email;
    }
    String getGeburtsdatum() {
        return geburtsdatum;
    }
    String[] getQualifikationen() {
        return qualifikationen;
    }
    String getEntgelt() {
        return entgelt;
    }
    
    void setName(String name) {
        this.name = name;
    }
    void setVorname(String vorname) {
        this.vorname = vorname;
    }
    void setAdresse(String adresse) {
        this.adresse = adresse;
    }
    void setTelefon(String telefon) {
        this.telefon = telefon;
    }
    void setEmail(String email) {
        this.email = email;
    }
    void setGeburtsdatum(String geburtsdatum) {
        this.geburtsdatum = geburtsdatum;
    }
    void setQualifikationen(String[] qualifikationen) {
        this.qualifikationen = qualifikationen;
    }
    void setEntgelt(String entgelt) {
        this.entgelt = entgelt;
    }
    
    public static boolean einzel_match (Mitarbeiter mitarbeiter, Stelle stelle) {
        
        int counter = 0;
        
        for (int i = 0; i < stelle.qualifikationen.length; i++) {
            
            String c_stelle = stelle.qualifikationen[i];
            
            for (int j = 0; j < 4; j++) {
                
                String c_mitarbeiter = mitarbeiter.qualifikationen[j];
                
                if (c_stelle.equals(c_mitarbeiter)) {
                    counter++;
                    break;

                }
            }
            
        }
        
        if (counter == stelle.qualifikationen.length ) {
            return true;
        } else {
            return false;
        }
        
    }
    
    public static String gesamt_match (Mitarbeiter[] mitarbeiter, Stelle[] stelle) {
        
        int counter = 0;
        ArrayList<string> match = new ArrayList<string>();
        
        for (int i = 0; i < stelle.length; i++) {
            
            Stelle c_stelle = stelle[i];
            
            for (int j = 0; j < mitarbeiter.length; j++) {
                
                Mitarbeiter c_mitarbeiter = mitarbeiter[j];
                if (einzel_match(c_mitarbeiter, c_stelle)) {
                    counter++;
                    System.out.println ("Passender Mitarbeiter für Stelle" + c_stelle.getProjektname() + "gefunden: " + c_mitarbeiter.getVorname() + " " + c_mitarbeiter.getName());
                }
                
            }
            
        }
        
        if (counter == 0) {
            return ("Matchvorgang nicht erfolgreich!");
        } else {
            return ("Matchvorgang erfolgreich! Es wurden insgesamt " + counter + " Mitarbeiter zugewiesen.");
            
        }
        
    }
    
    
}

Und hier nochmal das Mitarbeiter_GUI-Skript, vergesst das gestern (Sorry!)

Java:
import javax.swing.*;

import java.awt.Dimension;
import java.awt.event.*;


public class Mitarbeiter_GUI extends JFrame implements ActionListener {

    JFrame mitarb = new JFrame();
    JTextField feld_name = new JTextField();
    JTextField feld_vorname = new JTextField();
    JTextField feld_adresse = new JTextField();
    JTextField feld_telefon = new JTextField();
    JTextField feld_email = new JTextField();
    JTextField feld_geburtstag = new JTextField();
    JTextField feld_entgelt = new JTextField();
    JTextField quali1 = new JTextField();
    JTextField quali2 = new JTextField();
    JTextField quali3 = new JTextField();
    JTextField quali4 = new JTextField();

    JCheckBox c_intern = new JCheckBox();
    JCheckBox c_extern = new JCheckBox();
    
    JButton save = new JButton();
    JButton abbort = new JButton();
    JButton match = new JButton();


    JLabel label1 = new JLabel();
    JLabel label2 = new JLabel();
    JLabel label3 = new JLabel();
    JLabel label4 = new JLabel();
    JLabel label5 = new JLabel();
    JLabel label6 = new JLabel();
    JLabel label7 = new JLabel();
    JLabel label8 = new JLabel();
    JLabel label11 = new JLabel();
    JLabel labelquali1 = new JLabel();
    JLabel labelquali2 = new JLabel();
    JLabel labelquali3 = new JLabel();
    
    Dimension dm = new Dimension(570, 600);
    
    
    public void initComponents() {

        mitarb.setTitle("Mitarbeiter");
        mitarb.setLayout(null);
        mitarb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        feld_name.setPreferredSize(new Dimension(100,20));
        feld_vorname.setPreferredSize(new Dimension(100,20));
        feld_adresse.setPreferredSize(new Dimension(100,20));
        feld_telefon.setPreferredSize(new Dimension(100,20));
        feld_email.setPreferredSize(new Dimension(100,20));
        feld_geburtstag.setPreferredSize(new Dimension(100,20));
        feld_entgelt.setPreferredSize(new Dimension(100,20));
        
        quali1.setPreferredSize(new Dimension(100,20));
        quali2.setPreferredSize(new Dimension(100,20));
        quali3.setPreferredSize(new Dimension(100,20));
        quali4.setPreferredSize(new Dimension(100,20));


        save.setText("Speichern");
        abbort.setText("Abbrechen");
        match.setText("Match");
        mitarb.add(save);
        mitarb.add(abbort);    
        mitarb.add(match);    

        
        save.addActionListener(this);
        abbort.addActionListener(this);
        match.addActionListener(this);

        
        save.setActionCommand("speichern");
        abbort.setActionCommand("abbrechen");
        match.setActionCommand("match");

        
        
        mitarb.add(c_intern);
        mitarb.add(c_extern);

        label1.setText("Name");
        
        mitarb.add(label1);
        mitarb.add(feld_name);
    
        label2.setText("Vorname");

        mitarb.add(label2);
        mitarb.add(feld_vorname);
    
        label3.setText("Adresse");

        mitarb.add(label3);
        mitarb.add(feld_adresse);

        label4.setText("Telefonnummer");

        mitarb.add(label4);
        mitarb.add(feld_telefon);

        label5.setText("E-Mail");

        mitarb.add(label5);
        mitarb.add(feld_email);

        label6.setText("Geburtsdatum");

        mitarb.add(label6);
        mitarb.add(feld_geburtstag);

    
        label7.setText("Intern");

        mitarb.add(label7);
    
        label8.setText("Extern");
        mitarb.add(label8);
        //mitarb.setPreferredSize(dm);
        
        labelquali1.setText("Art des Hochschulabschlusses");
        labelquali2.setText("Fachgebiet");
        labelquali3.setText("Weitere Kompetenzen");

        mitarb.add(labelquali1);
        mitarb.add(quali1);
        mitarb.setPreferredSize(dm);
        mitarb.add(labelquali2);
        mitarb.add(quali2);
        mitarb.add(labelquali3);
        mitarb.add(quali3);
        mitarb.add(quali4);


        label11.setText("Entgelt");

        mitarb.add(label11);
        mitarb.add(feld_entgelt);
        mitarb.setPreferredSize(dm);
        int x =30;
        
        label1.setBounds(50, x, 60, 20);
        feld_name.setBounds(250, x, 250, 20);
        x=x+30;
        label2.setBounds(50,x, 60, 20);
        feld_vorname.setBounds(250, x, 250, 20);
        x=x+30;
        label3.setBounds(50, x, 60, 20);
        feld_adresse.setBounds(250, x, 250, 20);x=x+30;
        label4.setBounds(50,x, 160, 20);
        feld_telefon.setBounds(250, x, 250, 20);x=x+30;
        label5.setBounds(50, x, 60, 20);
        feld_email.setBounds(250, x, 250, 20);x=x+30;
        label6.setBounds(50,x, 160, 20);
        feld_geburtstag.setBounds(250, x, 250, 20);x=x+50;        
        label7.setBounds(50, x, 60, 20);
        c_intern.setBounds(150, x, 20, 20);
        c_extern.setBounds(300, x, 20, 20);
        label8.setBounds(250,x, 160, 20);x=x+50;
        labelquali1.setBounds(50, x, 180, 20);
        quali1.setBounds(250, x, 250, 20);
        x=x+30;
        labelquali2.setBounds(50,x, 160, 20);
        quali2.setBounds(250, x, 250, 20);
        x=x+30;
        labelquali3.setBounds(50, x, 160, 20);
        quali3.setBounds(250, x, 250, 20);x=x+30;
        quali4.setBounds(250, x, 250, 20);x=x+50;
        label11.setBounds(50,x, 60, 20);
        feld_entgelt.setBounds(250, x, 150, 20);x=x+60;
        
        save.setBounds(50, x, 100, 25);
        match.setBounds(200, x, 100, 25);

        abbort.setBounds(350, x, 100, 25);
        
        
        mitarb.setVisible(true);
        mitarb.pack();

    }
    
    int counter = 0;
    static Mitarbeiter[] Mitarbeiterx = new Mitarbeiter[15];
    
    public static Mitarbeiter[] getM() {
        return Mitarbeiterx;
    }

    public void build() {
        
        String status = "0";
        if (c_intern.isSelected() && !c_extern.isSelected()) {
            status = "Intern";
        }
        
        if (c_extern.isSelected() && !c_intern.isSelected()) {
            status = "Extern";
        }
        
        String[] qualis = {quali1.getText(), quali2.getText(), quali3.getText(), quali4.getText() };
        
        if (status.equals("Intern")) {
            Intern neu = new Intern(status, feld_name.getText(), feld_vorname.getText(), feld_adresse.getText(), feld_telefon.getText(), feld_email.getText(), feld_geburtstag.getText(), qualis, feld_entgelt.getText());
            Mitarbeiterx[counter] = neu;
            counter++;
            
            System.out.println(neu.status + "\n" + neu.name + "\n" + neu.vorname + "\n" + neu.adresse + "\n" + neu.telefon + "\n" + neu.email + "\n" + neu.geburtsdatum + "\n" + neu.qualifikationen[0] + "\n" + neu.qualifikationen[1] + "\n" + neu.qualifikationen[2] + "\n" + neu.qualifikationen[3] + "\n" +  neu.entgelt);

        }
        
        if (status.equals("Extern")) {
            Extern neu = new Extern(status, feld_name.getText(), feld_vorname.getText(), feld_adresse.getText(), feld_telefon.getText(), feld_email.getText(), feld_geburtstag.getText(), qualis, feld_entgelt.getText());
            Mitarbeiterx[counter] = neu;
            counter++;
            
            System.out.println(neu.status + "\n" + neu.name + "\n" + neu.vorname + "\n" + neu.adresse + "\n" + neu.telefon + "\n" + neu.email + "\n" + neu.geburtsdatum + "\n" + neu.qualifikationen[0] + "\n" + neu.qualifikationen[1] + "\n" + neu.qualifikationen[2] + "\n" + neu.qualifikationen[3] + "\n" +  neu.entgelt);
        }
        
        
        

    }

    
    public void actionPerformed(ActionEvent event) {


        if ("speichern".equals(event.getActionCommand())) {

            

            build();
            
            feld_name.setText("");    
            feld_vorname.setText("");
            feld_adresse.setText("");
            feld_telefon.setText("");
            feld_email.setText("");
            feld_geburtstag.setText("");
            feld_entgelt.setText("");
            quali1.setText("");
            quali2.setText("");
            quali3.setText("");
            quali4.setText("");
            c_intern.setSelected(false);
            c_extern.setSelected(false);

        }
        
        
        
        if ("match".equals(event.getActionCommand())){
            
        }
        
        if ("abbrechen".equals(event.getActionCommand())){
        mitarb.dispose();
        }
        
        
    }
    
    
    

}

Tut mir Leid, ich war gestern etwas im Stress, deswegen hier jetzt geordnet meine Probleme:

1. Im ActionListener ("Speichern"-Button soll eine Methode aufgerufen werden, die ein Mitarbeiter-Objekt erzeugt und den Inhalt der JFields als Parameter zuweist. Das scheint zu klappen:

System.outprint wie im obigen Code , wenn ich 3 mal hintereinander "einen Mitarbeiter anlege":
Intern
1
1
1
1
1
1
1
1
1
1
1
Extern
2
2
2
2
2
2
2
2
2
2
2
Intern
3
3
3
3
3
3
3
3
3
3
3

Also, scheint zu klappen.

Wenn ich den "Match"-Button probeweise mit folgendem Befehl ausstatte:

"System.out.println(Mitarbeiterx[1]);"

Kommt ( natürlich nachdem ich mind. 2 Mitarbeiter angelegt habe):

"Extern@3a503324"

Das verstehe ich schonmal nicht.


So, analog zu der Mitarbeiter_GUI-Maske gibt es eine Stelle_GUI-Maske. Jetzt ist der Moment gekommen, euch den Sinn des Programms zu verraten: Man kann mehrere Mitarbeiter und mehrere Stellen anlegen. Mit einem klick auf den "Match"-Button soll ein weiteres Fenster geöffnet werden, welches passende Mitarbeiter zu passenden Stellen ausgibt ( Dazu werden die "interessanten" JFields wie Qualifikation und Entgelt/Budget verglichen ). So, mein Problem ist, ich kriege die Informationen des Stelle_GUIs nicht in die Mitarbeiter_GUI, wo der Match-Knopf und dementsprechend auch die Match-Methode liegen soll (muss nicht, darum gehts aber auch nicht) Wenn ich zum Beispiel ein Array mit 8 Stellen in Stelle_GUI mit dem Klick auf "Speichern" erzeuge, und diese mir durch den Match-Knopf im Mitarbeiter_GUI anzeigen lassen will, bekomme ich 8 mal "null", statt die eingegebenen Werte. Versteht ihr was ich meine? Habt ihr eine Idee zur Lösung?

Hier das Stelle_GUI-Skript:

Java:
import javax.swing.*;

import java.awt.Dimension;
import java.awt.event.*;


public class Stelle_GUI extends JFrame implements ActionListener {

    JFrame stelle = new JFrame();
    JTextField feld_projektname = new JTextField();
    JTextField feld_projektinhalt = new JTextField();
    JTextField feld_stellenbudget = new JTextField();
    JTextField feld_projektrolle = new JTextField();
    JTextField feld_dauer = new JTextField();
    JTextField quali1 = new JTextField();
    JTextField quali2 = new JTextField();
    JTextField quali3 = new JTextField();
    JTextField quali4 = new JTextField();
    

    JButton save = new JButton();
    JButton abbort = new JButton();
    JButton match = new JButton();


    JLabel label1 = new JLabel();
    JLabel label2 = new JLabel();
    JLabel label3 = new JLabel();
    JLabel label4 = new JLabel();
    JLabel label5 = new JLabel();
    JLabel labelquali1 = new JLabel();
    JLabel labelquali2 = new JLabel();
    JLabel labelquali3 = new JLabel();
    
    Dimension dm = new Dimension(570, 600);
    
    
    public void initComponents2() {



        
        stelle.setTitle("Stelle");
        stelle.setLayout(null);
        stelle.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        feld_projektname.setPreferredSize(new Dimension(100,20));
        feld_projektinhalt.setPreferredSize(new Dimension(100,20));
        feld_stellenbudget.setPreferredSize(new Dimension(100,20));
        feld_projektrolle.setPreferredSize(new Dimension(100,20));
        feld_dauer.setPreferredSize(new Dimension(100,20));

        quali1.setPreferredSize(new Dimension(100,20));
        quali2.setPreferredSize(new Dimension(100,20));
        quali3.setPreferredSize(new Dimension(100,20));
        quali4.setPreferredSize(new Dimension(100,20));


        save.setText("Speichern");
        abbort.setText("Abbrechen");
        match.setText("Match");
        stelle.add(save);
        stelle.add(abbort);    
        stelle.add(match);    

        
        save.addActionListener(this);
        abbort.addActionListener(this);
        match.addActionListener(this);

        
        save.setActionCommand("speichern");
        abbort.setActionCommand("abbrechen");
        match.setActionCommand("match");

        
        
        label1.setText("Projektname");
        
        stelle.add(label1);
        stelle.add(feld_projektname);
    
        label2.setText("Projektinhalt");

        stelle.add(label2);
        stelle.add(feld_projektinhalt);
    
        label3.setText("Stellenbudget");

        stelle.add(label3);
        stelle.add(feld_stellenbudget);

        label4.setText("Projektrolle");

        stelle.add(label4);
        stelle.add(feld_projektrolle);

        label5.setText("Dauer");

        stelle.add(label5);
        stelle.add(feld_dauer);


        labelquali1.setText("Art des Hochschulabschlusses");
        labelquali2.setText("Fachgebiet");
        labelquali3.setText("Weitere Kompetenzen");

        stelle.add(labelquali1);
        stelle.add(quali1);
        stelle.setPreferredSize(dm);
        stelle.add(labelquali2);
        stelle.add(quali2);
        stelle.add(labelquali3);
        stelle.add(quali3);
        stelle.add(quali4);

        int x =30;
        
        label1.setBounds(50, x, 160, 20);
        feld_projektname.setBounds(250, x, 250, 20);
        x=x+30;
        label2.setBounds(50,x, 160, 20);
        feld_projektinhalt.setBounds(250, x, 250, 80);
        x=x+90;
        label3.setBounds(50, x, 160, 20);
        feld_stellenbudget.setBounds(250, x, 250, 20);x=x+30;
        label4.setBounds(50,x, 160, 20);
        feld_projektrolle.setBounds(250, x, 250, 20);x=x+30;
        label5.setBounds(50, x, 60, 20);
        feld_dauer.setBounds(250, x, 250, 20);x=x+50;
        labelquali1.setBounds(50, x, 180, 20);
        quali1.setBounds(250, x, 250, 20);
        x=x+30;
        labelquali2.setBounds(50,x, 160, 20);
        quali2.setBounds(250, x, 250, 20);
        x=x+30;
        labelquali3.setBounds(50, x, 160, 20);
        quali3.setBounds(250, x, 250, 20);x=x+30;
        quali4.setBounds(250, x, 250, 20);x=x+50;
        
        save.setBounds(50, x, 100, 25);
        match.setBounds(200, x, 100, 25);
        abbort.setBounds(350, x, 100, 25);
        
        
        stelle.setVisible(true);
        stelle.pack();

    }
    
    int counter = 0;
    static Stelle[] Stellenx = new Stelle[15];
    
    static Stelle test = Stellenx[1];
    
    public static Stelle[] getS() {
        return Stellenx;
    }
    
    public static String geteinzelstelle() {

        return test.projektinhalt;

    }



    


    public void build() {
        
        String[] qualis = {quali1.getText(), quali2.getText(), quali3.getText(), quali4.getText() };
        
        Stelle neu = new Stelle(feld_projektname.getText(), feld_projektinhalt.getText(), feld_projektrolle.getText(), qualis, feld_stellenbudget.getText(), feld_dauer.getText());
        Stellenx[counter] = neu;
        counter++;


    }

    
    public void actionPerformed(ActionEvent event) {


        if ("speichern".equals(event.getActionCommand())) {

            

            build();
            
            feld_projektname.setText("");    
            feld_projektinhalt.setText("");
            feld_stellenbudget.setText("");
            feld_projektrolle.setText("");
            feld_dauer.setText("");
            quali1.setText("");
            quali2.setText("");
            quali3.setText("");
            quali4.setText("");

        }
        
        
        
        if ("match".equals(event.getActionCommand())){
            
        }
        
        if ("abbrechen".equals(event.getActionCommand())){
        stelle.dispose();
        }
        
        
    }
    
    
    

}

Und zu guter letzt das "Stelle"-Skript:

Java:
public class Stelle {

    String projektname, projektinhalt, projektrolle, stellenbudget, dauer;
    String[] qualifikationen;
    
    public Stelle (String projektname, String projektinhalt, String projektrolle, String[] qualifikationen, String stellenbudget, String dauer) {
        
        this.projektname = projektname;
        this.projektinhalt = projektinhalt;
        this.projektrolle = projektrolle;
        this.qualifikationen = qualifikationen;
        this.stellenbudget = stellenbudget;
        this.dauer = dauer;
        
    }
    
    String getProjektname() {
        return projektname;
    }
    String getProjektinhalt() {
        return projektinhalt;
    }
    String getProjektrolle() {
        return projektrolle;
    }
    String[] getQualifikationen() {
        return qualifikationen;
    }
    String getStellenbudget() {
        return stellenbudget;
    }
    String getDauer() {
        return dauer;
    }
    
    void setProjektname(String projektname) {
        this.projektname = projektname;
    }
    void setProjektinhalt(String projektinhalt) {
        this.projektinhalt = projektinhalt;
    }
    void setProjektrolle(String projektrolle) {
        this.projektrolle = projektrolle;
    }
    void setQualifikationen(String[] qualifikationen) {
        this.qualifikationen = qualifikationen;
    }
    void setStellenbudget(String stellenbudget) {
        this.stellenbudget = stellenbudget;
    }
    void setDauer(String dauer) {
        this.dauer = dauer;
    }
    
    
    
    
}
public class Stelle {

    String projektname, projektinhalt, projektrolle, stellenbudget, dauer;
    String[] qualifikationen;
    
    public Stelle (String projektname, String projektinhalt, String projektrolle, String[] qualifikationen, String stellenbudget, String dauer) {
        
        this.projektname = projektname;
        this.projektinhalt = projektinhalt;
        this.projektrolle = projektrolle;
        this.qualifikationen = qualifikationen;
        this.stellenbudget = stellenbudget;
        this.dauer = dauer;
        
    }
    
    String getProjektname() {
        return projektname;
    }
    String getProjektinhalt() {
        return projektinhalt;
    }
    String getProjektrolle() {
        return projektrolle;
    }
    String[] getQualifikationen() {
        return qualifikationen;
    }
    String getStellenbudget() {
        return stellenbudget;
    }
    String getDauer() {
        return dauer;
    }
    
    void setProjektname(String projektname) {
        this.projektname = projektname;
    }
    void setProjektinhalt(String projektinhalt) {
        this.projektinhalt = projektinhalt;
    }
    void setProjektrolle(String projektrolle) {
        this.projektrolle = projektrolle;
    }
    void setQualifikationen(String[] qualifikationen) {
        this.qualifikationen = qualifikationen;
    }
    void setStellenbudget(String stellenbudget) {
        this.stellenbudget = stellenbudget;
    }
    void setDauer(String dauer) {
        this.dauer = dauer;
    }
    
    
    
    
}

Ich weiss, es ist sauviel zu lesen.. Aber ich weiss nicht, wie ich das Problem sonst verständlich machen kann!;(

edit: das Mit extends.Jframe hab ich mir schon fast gedacht, ist schon beseitigt, denkt euch es hier einfach weg :D
</string></string>
 
Zuletzt bearbeitet:

InfectedBytes

Top Contributor
Wenn der Parameter dem du System.out.println mitgibst kein String ist, wird lediglich die toString Methode davon ausgerufen und das Ergebnis auf der Konsole ausgegeben. Da du die toString Methode nicht überschrieben hast, wird eben die Methode aus der Elternklasse (Object) genutzt. Und diese gibt nunmal den Namen + die Referenz in textueller Form zurück: "Extern@3a503324"
Wenn du was anderes bekommen willst, musst du eben die toString Methode überschreiben und dort einen schöneren String zusammenbauen.

Bisher macht dein Match Command gar nichts, du solltest uns am besten zeigen was du dort bisher versucht hast.
 

anscash

Mitglied
ok Danke!

Wenn ich im Match-Command etwas versuche/eine Methode aufrufe, die in Beziehung zu anderen Objekte steht ( zum Beispiel die Mitarbeiter-Objekte), kommt diese lange Exception:

Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Mitarbeiter_GUI.match(Mitarbeiter_GUI.java:228)
    at Mitarbeiter_GUI.actionPerformed(Mitarbeiter_GUI.java:264)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Gerade zum Beispiel habe ich folgendes testweise versucht ( Will mich ja zärtlich an den Match-Vorgang annähern, jetzt noch ohne zweite Maske)

in Mitarbeiter_GUI:
Zusätzlich zur build()-Methode, die ja funktioniert, noch eine Methode:

Java:
    public void match() {
        
        if ( Mitarbeiterx[0].status.equals(Mitarbeiterx[1].status)) {
            System.out.println("Passt!");
        }
        
    }

Und beim Match-Command:

ganz einfach

build();

Naja, jetzt bekomme ich dieses riesen-Fehlermeldung. :(

edit: mmh, wenn ich testweise Mitabeiterx[0].status gegen Mitabeiterx[0].getCLass ersetze und mit Mitabeiterx[1].getCLass ersetze, passt es. Brauche ich für die interessanten Parameter einen getter?
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
Zunächst sind alle Mitarbeiter in deinem Mitarbeiterx Array null, d.h. nicht initialisiert.
Wenn du dann
Java:
Mitarbeiterx[0].status.equals(Mitarbeiterx[1].status
aufrufst, hängt es von der Anzahl der bereits erzeugten Mitarbeiter ab, ob eine NPE fliegt oder nicht. Erst wenn du 2 Mitarbeiter angelegt hast, fliegt keine NPE. Und wieviel Mitarbeiter es gibt, hängt davon ab, wie oft der save-Button gedrückt wurde. Und das wiederum ist aus dem Code nicht ersichtlich.
Ausserdem vergleicht die genannte match-methode zwei Mitarbeiter. Was soll das? Die Logik würde eher zu einer Partnervermittlung passen.
Die von dir beschriebenen macth-methoden würde ich übrigens nicht in irgendwelchen Gui-Klassen unterbringen, sondern in der Mitarbeiter bzw. Stelle-Klasse. Wenn die Stelle-Klasse eine match-methode implementiert, die einen Mitarbeiter als Parameter bekommt, kann die Stelle quasi selber entscheiden, ob der Mitarbeiter passt.
Zur Länge des Codes: Wenn du einen Layoutmanager verwenden würdest, und wenn du dich bei deiner Mitarbeiter-Klasse auf Namen, Vornamen, und 2 Qualifikationen beschränken würdest (und auf die entsprechenden Gui-Elemente), würde der Code sehr viel kürzer werden. So muss man sich durch hunderte Codezeilen ackern, was den Aufwand erhöht, die von dir genannten Codestellen zu finden.
 

anscash

Mitglied
Okay alles klar.
Der Mitarbeiter-Mitarbeiter-Vergleich war nur ein Test, der einfachheitheit halber eben M zu M ;)

Habe hier 2 Test-Match-Klassen

Java:
    public void match1() {
        
            if ( Mitarbeiterx[0].getQuali1().equals(Stelle_GUI.getStelle().quali1)) {
                System.out.println("Passt!" + Stelle_GUI.getStelle().quali1);
            }
            if ( !Mitarbeiterx[0].getQuali1().equals(Stelle_GUI.getStelle().quali1)) {
                System.out.println("NEIN!" + Stelle_GUI.getStelle().quali1);
            }    

        
        
    }
    
    public void match(Mitarbeiter[] mitarbeiter, Stelle [] stellen) {
        
        for (int i = 0; i < mitarbeiter.length; i++) {

            if (mitarbeiter[i].getQuali1().equals(stellen[i].getQuali1())){
                System.out.print("Passender Mitarbeiter Nummer " + i + " zu Stelle " + i);
            } else {
                System.out.println("NEIN");
            }
            
        }
        
                
        
        
    }

Stelle_GUI.getStelle() holt sich nur den ersten Stellen-Array-Platz. Damit klappts.
Aber mit der zweiten Methode match(Mitarbeiter[] mitarbeiter, Stelle [] stellen) klappt es nicht so ganz. Die Test-System-outs werden KORREKT ausgeben, eine Zeile später gibt es jedoch die bekannte Fehlermeldung.

Und die Methode ist ja noch nicht einmal gut so, da hier ja gleich viele Mitarbeiter wie Stellen erzeugt werden müssen und das darf nicht sein.

Das sieht dann so aus: (Bei 3 angelegten Stellen, also 3 mal jeweils Speichern gedrückt)

Java:
Passender Mitarbeiter Nummer 0 zu Stelle 0
NEIN
NEIN
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Mitarbeiter_GUI.match(Mitarbeiter_GUI.java:238)
    at Mitarbeiter_GUI.actionPerformed(Mitarbeiter_GUI.java:282)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Wieso die Exception???:rtfm:

edit: Die Sinnlosigkeit von Zeilen wie
Java:
Passender Mitarbeiter Nummer " + i + " zu Stelle " + i

ist mir schon bewusst, bin hier nur grad ziemlich am rotieren. Das was mich brennend interessiert, ist eben die Ursache besagter Exception!!
 
Zuletzt bearbeitet:

InfectedBytes

Top Contributor
Du durchläufst das ganze Array, wenn es komplett gefüllt wurde ist es okey, aber wenn du eben nur die ersten paar Stellen des Arrays mit werten gefüllt hast, ist der Rest logischerweise weiterhin null und somit erhälst du die Exception.
 

anscash

Mitglied
Natürlich!!!!! Danke, hab echt Tomaten auf den Augen...
Mmmh wie mache ich das jetzt bloß, das die Länge beider Container variabel ist... Gegen Listen zu ersetzen ist so ne Sache, hab hier ja quasi alles auf Arrays gestützt
 

InfectedBytes

Top Contributor
Listen wären eigentlich am besten geeignet.
Ansonsten hast du ja noch einen Zähler, welchen du nutzt um den nächsten freien Index anzugeben. Dieser ist im Grunde ja nichts weiter als deine obergrenze. Anstatt also bis mitarbeiter.length durchzugehen, gehst du halt bis counter (oder wie auch immer du den Zähler genannt hast) durch.
Java:
for(int i=0;i<counter;i++){
...
}

Ansonsten kannst du auch einfach das Arrayelement vorher auf null prüfen:
Java:
for(int i=0;i<mitarbeiter.length; i++){
if(mitarbeiter[i] != null){
...
}
}
 

anscash

Mitglied
Danke!!

Java:
    public void build_mitarbeiter2() {
        
        String status = "0";
        if (c_intern.isSelected() && !c_extern.isSelected()) {
            status = "Intern";
        }
        
        if (c_extern.isSelected() && !c_intern.isSelected()) {
            status = "Extern";
        }
        
        if (status.equals("Intern")) {
            Intern neu = new Intern(status, feld_name.getText(), feld_vorname.getText(), feld_adresse.getText(), feld_telefon.getText(), feld_email.getText(), feld_geburtstag.getText(), quali1.getText(), quali2.getText(), quali3.getText(), quali4.getText(), feld_entgelt.getText());
            mitarbeiter_liste.add(neu);
            
            System.out.println(neu.status + "\n" + neu.name + "\n" + neu.vorname + "\n" + neu.adresse + "\n" + neu.telefon + "\n" + neu.email + "\n" + neu.geburtsdatum + "\n" + neu.quali1 + "\n" + neu.quali2 + "\n" + neu.quali3 + "\n" + neu.quali4 + "\n" +  neu.entgelt);

        }
        
        if (status.equals("Extern")) {
            Extern neu = new Extern(status, feld_name.getText(), feld_vorname.getText(), feld_adresse.getText(), feld_telefon.getText(), feld_email.getText(), feld_geburtstag.getText(), quali1.getText(), quali2.getText(), quali3.getText(), quali4.getText(), feld_entgelt.getText());
            mitarbeiter_liste.add(neu);
            
            System.out.println(neu.status + "\n" + neu.name + "\n" + neu.vorname + "\n" + neu.adresse + "\n" + neu.telefon + "\n" + neu.email + "\n" + neu.geburtsdatum + "\n" + neu.quali1 + "\n" + neu.quali2 + "\n" + neu.quali3 + "\n" + neu.quali4 + "\n" +  neu.entgelt);
        }
    }

Habe hier schnell eine build-Methode mit Listen gebastelt, analog dazu in der Stellen_GUI-KLasse:

Java:
    public void build_stelle() {

        Stelle neu = new Stelle(feld_projektname.getText(), feld_projektinhalt.getText(), feld_projektrolle.getText(), quali1.getText(), quali2.getText(), quali3.getText(), quali4.getText(), feld_stellenbudget.getText(), feld_dauer.getText());
        stellen_liste.add(neu);
        
    }

Und die dazugehörige Match-Methode:

Java:
    public void match2() {
        
        for ( int i = 0; i < Stelle_GUI.getListe().size(); i++) {
            
            Stelle stelle = Stelle_GUI.getListe().get(i);
            
            for ( int j = 0; j < mitarbeiter_liste.size(); j++) {
                
                Mitarbeiter mitarbeiter = mitarbeiter_liste.get(j);

                if (Stelle_GUI.getListe().get(i).getQuali1().equals(mitarbeiter.getQuali1())) {
                    System.out.println("Passender Mitarbeiter gefunden: Stelle Nummer " + i + " zu Mitarbeiter Nummero " + j);
                } else {
                    System.out.println("Nichts zu holen");
                }
                
            }
            
            
        }
    }

Da passiert aber nichts, wenn ich den match-button betätige.
Vielleicht hast du ja noch einen guten Ratschlag für mich, ich werde derweil deinen letzten versuchen umzusetzen :)
 

InfectedBytes

Top Contributor
Erstmal würde ich die foreach schleife nahelegen:
Java:
for(Mitarbeiter m : mitarbeiter) {

}
Damit ist es weitaus angenehmer zu arbeiten als mit int i=..;..;..
Deinen Code kann man damit soweit vereinfachen:
Java:
public void match2() {
	for (Stelle stelle : Stelle_GUI.getListe()) {
		for (Mitarbeiter mitarbeiter : mitarbeiter_liste) {
			if (stelle.getQuali1().equals(mitarbeiter.getQuali1())) {
				System.out.println("Passender Mitarbeiter gefunden...");
			} else {
				System.out.println("Nichts zu holen");
			}
		}
	}
}

Und nun zu deinem Problem:
Was meinst du mit "es passiert nichts"? Passiert rein gar nichts? Oder kommt wird immer nur "Nichts zu holen" ausgegeben?

Sicher das du auch die match2 Methode aufrust und nicht die alte match Methode?
Was für ein Datentyp hat getQuali? Falls es ein selbst definierter Datentyp ist, hasst du auch die equals Methode überschrieben?
Falls es ein String ist, achte auf die gleiche Groß/Kleinschreibung
 
Zuletzt bearbeitet:

anscash

Mitglied
Danke, werde die Schleife verändern.

Es wird garnichts ausgegben, auch keine Fehlermeldung.
Groß- und Kleinschreibung wurde beachetet.
Sowohl in Klasse Mitarbeiter als auch in Klasse Stelle ist getQuali1 eine String-Methode
Es wird match2(), also die korrekte Methode aufgerufen.
 

anscash

Mitglied
Alles klar, habe durch das viele Alternativmethoden erstellen tatsächlich vergessen, den "Speichern"-Knopf richtig zu besetzen.
Vielen Vielen Dank, es scheint vorerst zu gehen, wenn ich noch Probleme habe, werde ich einfach hier schreiben :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
T allgemeines Problem Java Basics - Anfänger-Themen 11
Vivien Bitte um Optimierungsvorschläge / Verbesserungsvorschläge / allgemeines Feedback Java Basics - Anfänger-Themen 8
C Allgemeines Verständnis For-Schleife Java Basics - Anfänger-Themen 3
J OOP Allgemeines zur Code-Organisation Java Basics - Anfänger-Themen 2
J Allgemeines Programmieren Java Basics - Anfänger-Themen 25
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben