Text aus Textfeld aus Gui ins Model laden

Er soll den Courser immer in das Feld setzen wo der fehler war..Hab ich aber noch nicht abgeändert...Das Problem ist halt, das immer nix zurück kommt...Egal was ich ins textfeld eingebe
 
Er soll den Courser immer in das Feld setzen wo der fehler war.
Das passiert aber nicht mit dieser Methode. So kannst du nur festlegen, welcher Cursor angezeigt werden soll.

Was das Problem ist, weiß ich ja. Ich müsste aber auch mal den restlichen Quellcode sehen, damit ich sehen kann, wie der Ablauf ist und was sonst das Problem sein könnte. Deshalb möchte ich dich bitten, mal die andere Klasse zu posten.

Wenn er Text zu lang ist, kannst du auch einfach die Datei anhängen.

MFG

Sascha
 
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
 
Zurück