MADE MY DAY
@TO
Du hast aber schon mal was von Paket-Imports gehört oder ?
Bei der langen Liste an Imports baut der Compiler aus Performance-Gründen daraus eh folgendes :
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
Das kannst du gerne mit einem de-Compiler nachprüfen. Ab einer gewissen Menge an Imports aus dem selben Paket wird auf die Strategie "importiere das gesamte Paket* gewechselt. Nur wenn es sehr wenige Imports aus dem selben Paket sind ist eine explizite Klassenangabe sinnvoll.
Auch hat das ganze was mit Lesbarkeit und Übersicht des Codes zu tun.
Was mir dann noch weiter aufgefallen ist :
Java:
private static final long serialVersionUID=1L;
Du hast nicht ernsthaft vor ein JFrame zu serialisieren oder ? Davon abgesehen das diese Zeile ohne das Interface Serializable nutzlos ist und damit beim compilen eh rausfliegt *zumindest sollte sie das bei nem guten Compiler*.
Wobei alles weitere um diese Zeile genau so Käse ist : Objekt-Erzeugungen gehören in einen Konstruktor / eine Methode ! ... NICHT in den static-class-Kontext ! Auch hier greift wieder der Compiler und verschiebt solche Zeilen automatisch in den Konstruktor. Also davon abgesehen das sowas garnicht möglich ist sieht es auch nicht sehr schön aus. *Und zeigt eigentlich das du noch sehr wenig Erfahrung mit Java hast.*
Auch machen mich diese 4 Zeilen sehr stutzig :
Java:
hauptauswahlgui.button1.addActionListener(this);
//...
Davon abgesehen das es nur in sehr wenigen fällen Sinn hat den Inhalt des Konstruktors in eine eigene Methode auszulagern *nichts anderes machst du ... und der Compiler macht es wieder rückgängig da nacher ALLES im Konstruktor steht* gehören solche Dinge in den Konstruktor des jeweiligen Objektes.
Wenn du unbedingt Child-Objekten eines Objektes einen ActionListener der aktuellen Klasse übergeben willst ... dann übergib dem Konstruktor des Objektes eine Referenz auf die aktuelle Klasse *mit this*.
Optimiert würde das *! PSEUDO-CODE ! - compilebares Beispiel* so aussehen :
Java:
package pseudo;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MainClass implements ActionListener
{
private ChildClass childObject=null;
public MainClass()
{
childObject=new ChildClass(this);
}
public void actionPerformed(ActionEvent event)
{
}
}
class ChildClass
{
private JButton button=null;
private ChildClass() { } // private NULL-Konstruktor
// verhindert das ein Objekt ohne Übergabereferenz erzeugt werden kann
protected ChildClass(ActionListener mainClass)
{
button=new JButton("BUTTON");
button.addActionListener(mainClass);
}
}
Dann fällt mir in der Klass DialogMitarbeiterEinfuegen noch dieser riesige GUI-Builder-Block auf ... da hast du dir ja einiges zusammen geklickt ... nicht gerade hilfreich für den Lerneffekt und -erfolg ... aber solange es funktioniert soll mich das nicht weiter stören ... auch wenn ich es deutlich optimierter schreiben kann.
Und zu guter Letzt fällt mir noch genau das auf was vfl schon sagte : du hast zwar soweit die GUI komplett ... aber von der Logik her fehlt noch das wichtigste : die Daten aus dem Input-Dialog in das TableModel zu übernehmen ...