So, Problem gefunden.
In deiner Klasse Model machst du das
Code:
MainFrame Main = new MainFrame();
Das Wort "new" in einer solchen Anweisung sagt aus, dass was neues angelegt wird, deshalb ja auch new(engl. neu).
Also da wird ein neues Objekt der Klasse MainFrame angelegt. Über dieses Objekt kommt man natürlich
nicht an die Daten eines anderen Objekts der Klasse MainFrame.
Du musst dann dafür sorgen, dass das Objekt der Klasse Model irgendwie eine Instanz von MainFrame bekommt. Das könnte man so lösen
Code:
public class Model {
private static Model singleton = null;
private Color ErrorColor = new Color(255, 210, 210);
MainFrame main = null;
private Cursor cursor;
private Model(MainFrame frame){
this.main = frame;
}
public static Model getModel(MainFrame frame)
{
if (singleton == null)
{
singleton = new Model(frame);
}
return singleton;
}
Dann wie ich schon oben gesagt hab, solltest du Code der öfter vorkommt in Methoden auslagern. So hast du es einfacher, wenn du mal was ändern musst.
Wie ich auch schon gesagt hab, ist dein Model kein Model. Deine Klasse Model ist eine Mischung von einem Model, einem DAO und einer Art Controller. Damit wird der Code sehr unübersichtlich und schlecht wartbar. Darauf ist zum Beispiel zurückzuführen, dass man diesen Fehler so schlecht gefunden hat.
Du solltest dir eine richtige Modelklasse schreiben, in der du die Daten setzt. Also einfach eine Klasse, die die ganzen Variablen hat, die für die Inhalte der TextFelder und Comboboxen sind. Für diese Variablen dann natürlich auch die ganzen Getter- und Setter-Methoden.
Dann eine Klasse(DAO) die komplett den Datenbankzugriff regelt. Da können dann Methoden zum Speichern, Laden, Updaten der Daten drin sein und natürlich alles was du sonst noch brauchst, wie suchen oder sowas. Diesen Methoden übergibst du dann einfach immer ein Objekt der Modelklasse.
Dann noch einen Controller der die Daten aus der GUI ins Model bringt und dann das Model mit der DAO-Klasse die Daten speichert.
Natürlich gibt es noch einiges mehr was man machen kann, aber das wäre schon ein Anfang. Wenn du dich daran hälst, wirst du auch schneller Fehler finden, weil deine Klassen und Methoden wesentlich kleiner sind.
Vor allem sind Methoden(z.b. holen) die 400 Zeilen und mehr groß sind, sehr unübersichtlich. Du solltest schon versuchen Methoden unter 100 Zeilen groß zu halten, wobei das auch noch zu groß ist.
Wäre gut, wenn du meine Ratschläge beherzigen würdest.
MFG
Sascha