Programmeinstellungen für Anwendung??

Bitte aktiviere JavaScript!
Ich wollte den obigen Post noch korrigieren aber die Zeit war abgelaufen.
Ich habe den Fehler habe ich selbst gefunden. So funktioniert es.
Java:
public EinstellungenFM einstellungenLadenHD(Einstellungen einstellungen){
        EinstellungenFM fensterModell = new EinstellungenFM(einstellungen);
//        EinstellungenFM fensterModell = null;
        Einstellungen einstellungenHD = new Einstellungen();
        einstellungenHD = Einstellungen.leseEinstellungenHD(einstellungen);

        // Werte in das Fenster-Modell übetragen
        fensterModell.schreibePfadQuelle(einstellungenHD.holePfadQuelle());
        fensterModell.schreibePfadZiel(einstellungenHD.holePfadZiel());
        fensterModell.schreibePfadOCR(einstellungenHD.holePfadOCR());
        fensterModell.schreibePfadOhneDokumentArt(einstellungenHD.holePfadOhneDokumentArt());
        fensterModell.schreibePfadLoeschen(einstellungenHD.holePfadLoeschen());
        fensterModell.schreibePfadGeschuetzt(einstellungenHD.holePfadGeschuetzt());
        fensterModell.schreibePfadBild(einstellungenHD.holePfadBild());
        fensterModell.schreibePfadEinstellungen(einstellungenHD.holePfadEinstellungen());

        fensterModell.schreibeDbServeradresse(einstellungenHD.holeDbServeradresse());
        fensterModell.schreibeDbDatenbankname(einstellungenHD.holeDbDatenbankname());
        fensterModell.schreibeDbBenutzername(einstellungenHD.holeDbBenutzername());
        fensterModell.schreibeDnbToken(einstellungenHD.holeDnbToken());

        return fensterModell;
    } // einstellungenLadenHD
Anschliessend die neuen Daten dann im Fenster aktualisiert anzeigen lassen.
Methode im Fenster Kontroller
Java:
@FXML
    private void einstellungenLaden(ActionEvent event) {
        LOG.info("einstellungenLaden wurde aufgerufen");
//        fensterModell.einstellungenLadenHD(einstellungen);
        EinstellungenFM fensterModellHD = new EinstellungenFM(einstellungen);
        fensterModellHD = fensterModell.einstellungenLadenHD(einstellungen);
        fensterModell.schreibePfadQuelle(fensterModellHD.holePfadQuelle());
} // einstellungenLaden
Ich hatte versucht einfach das fenstermodell zu überschreiben
fensterModellHD = fensterModell.einstellungenLadenHD(einstellungen);

Das hatte soweit nicht funktioniert und daher wollte ich mal nachfragen ob das überhaupt möglich ist?

Als ich gerade so dabei bin die neuen Daten des FensterModelles zurück zu geben ist mir aufgefallen, das ich doch auch das Modell der Einstellungen zurückgeben sollte, damit die am entsprechenden Programmpunkt ebenfalls aktuell sind??
 
Zuletzt bearbeitet:
Code:
Caused by: java.lang.NullPointerException
    at einstellungen.EinstellungenFM.einstellungenLadenHD(EinstellungenFM.java:96)
==> Was ist die Zeile 96 der Klasse EinstellungenFM (In einstellungenLadenHD Methode)?
 
In der Zeile 96 ist nichts.
Der null Pointer Exception kam weil ich fensterModell als null deklariert hatte und es dann nicht als Instanz erzeugt hatte.
Ich habe es oben Kommentiert wie es vorher war. Darüber habe ich die Instanz erzeugt, danach gab es keine Fehlermeldungen mehr.

Danke
 
In der Zeile 96 ist nichts.
Der null Pointer Exception kam weil ich fensterModell als null deklariert hatte und es dann nicht als Instanz erzeugt hatte.
Ich habe es oben Kommentiert wie es vorher war. Darüber habe ich die Instanz erzeugt, danach gab es keine Fehlermeldungen mehr.

Danke
Nach deiner Änderung war da nichts mehr. Als die Exception geworfen wurde, muss da etwas gewesen sein, dass eben die NPE ausgelöst hat. Nach Deiner Beschreibung dann wohl ein Zugriff auf eben dieses fensterModell, welches null war (So dass Deine Änderung war).

Also als Hinweis für die eigene Fehlersuche:
Bei dem StackTrace immer schauen, was die eigentliche Ursache ist. Wenn die Exception abgefangen und dann eine andere Exception geworfen wird, dann kommen manchmal Exceptions, die so erst einmal einem nicht weiter helfen. Daher immer schön bis zum Ende gehen und dann findet man schnell die Ursache.
 
Nach deiner Änderung war da nichts mehr. Als die Exception geworfen wurde, muss da etwas gewesen sein, dass eben die NPE ausgelöst hat. Nach Deiner Beschreibung dann wohl ein Zugriff auf eben dieses fensterModell, welches null war (So dass Deine Änderung war).
Der Code ist auf der vorherigen Seite zu finden :)

der relevante Teil ist:

Java:
-->     EinstellungenFM fensterModell = null;
        Einstellungen einstellungenHD = new Einstellungen();
        einstellungenHD = Einstellungen.leseEinstellungenHD(einstellungen);
      
        // Werte in das Fenster-Modell übetragen
-->     fensterModell.schreibePfadQuelle(einstellungenHD.holePfadQuelle());
 
Da aktuell das Grundgerüst nun steht und soweit auch alles soweit funktioniert überlege ich gerade an folgende Optionen um mit den Programmeinstellungen ab zu schließen.

1. Einen Standardpfad für Programmeinstellungen der sich nicht mehr ändert?
Einen Standardpfad für die Einstellungen im Benutzerverzeichnis C:\Benutzerordner\Benutzername\Applikation\Einstellungen.ser
Wenn das Programm keine Einstellungen hat werden alle Standardpfade auf das Benutzerverzeichnis gelegt.
Wenn man das Verzeichnis der Einstellungen verlegen sollte wie zB. B:\Einstellungen\Einstellungen.ser weiß das Programm nicht wo es die Einstellungen laden soll. Daher dache ich mir das es das einfachste wäre die Einstellungendatei immer im Benutzerverzeichnisse zu lagern und die anderen Verzeichnisse sind dann ja in der Datei definiert.

2. Laden der Einstellungen vor dem eigentlichen Start?
Ich habe mir Überlegt die Einstellungen in der init() zu laden, damit diese vor dem Programmstart alle verfügbar sind.
Und immer weiter reichen um die Inhalte verfügbar zu machen.

3. Keine Einstellungsdatei dann Fenster aufrufen?
Wenn keine Einstellungen Datei vorhanden sind, werden alle Pfade als Standard in das Benutzerverzeichnis gelegt. Sollte man es einfach so belassen oder das Fenster mit den Einstellungen öffnen um die Pfade zu definieren?
Das Einstellungen Fenster kann auch im Menü angewählt werden um die Pfade zu ändern.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben