Properties automatisch laden

gr33nhat

Mitglied
Hallo alle zusammen, mal wieder ich :)..

leider komme ich an einer Stelle nicht weiter und hoffe einer von euch kann mir den riesigen Pflock vor meinen Augen entfernen.

Folgendes Scenario:
Habe eine Main Klasse in der ich meine Scene öffne (mittels fxml-Datei).
Nun kann man in dem Fenster etwas in ein Textfeld schreiben. Beim nächsten Start möchte ich, dass genau diese Eingabe wieder zum Vorschein kommt.

Gerade habe ich das so realisiert:
Ich starte die Anwendung und im Textfeld erscheint der Wert "Fisch" dies ist auch richtig, da ich ja diesen Wert in der fxml-Datei vergeben habe. Nun ändere ich diesen Wert in "Gemüse" klicke auf einen Speichern-Button. Dieser legt dann den geänderten Wert in einer XML-Propertie-Datei ab.
Nun schließe ich das Programm und öffne es erneut. Nun steht im Textfeld wieder "Fisch". Mit einen klick auf den Lade-Button ändert sich der Wert automatisch auf "Gemüse".

Dies möchte ich jedoch nicht mehr so habe. Sondern sobald sich das Fenster aufgebaut hat soll der Wert schon geändert werden.

Hat hier jemand eine Idee wie ich das realisieren könnte?

Liebe Grüße

Benedikt
 

Flown

Administrator
Mitarbeiter
Du könntest die Datei laden, falls diese nicht vorhanden ist, bzw. der Wert nicht, befüllst du es mit dem Default-Wert, ansonsten mit dem gespeicherten Wert.
 

gr33nhat

Mitglied
Danke für die schnelle Antowrt :)

Hier mal ein Auszug aus dem Code:

Java:
public void showPreferencesDialog() {
        try {

            // Load the fxml file and create a new stage for the popup dialog.
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(MainApp.class.getResource("view/PreferencesDialog.fxml"));
            // AnchorPane page = (AnchorPane) loader.load();
            Parent page = (Parent) loader.load();

            // Create the dialog Stage.
            Stage dialogStage = new Stage();

            dialogStage.setTitle("Edit Person");
            dialogStage.initModality(Modality.APPLICATION_MODAL); // sperrt
                                                                    // andere
                                                                    // Fenster
            dialogStage.initOwner(primaryStage);
            Scene scene = new Scene(page);
            dialogStage.setScene(scene);


            dialogStage.showAndWait();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

FXML:
Hier soll z.B. sicherung.mdb ersetzt werden.

Code:
 <TextField fx:id="database" layoutX="212.0" layoutY="45.0" prefWidth="200.0" text="sicherung.mdb" />

In meinem Controller initialisiere ich nun mein Textfeld

Java:
@FXML
    private static TextField database;

stehe hier auf dem Schlauch, wie ich den Wert laden soll.
 

Flown

Administrator
Mitarbeiter
Du kannst über den FXMLLoader dir den Controller holen und dann das TextProperty deines Feldes setzen.
 

gr33nhat

Mitglied
In die Richtung?

Java:
 */
  
publicvoid showPreferencesDialog(){
       try{

           // Load the fxml file and create a new stage for the popup dialog.
            FXMLLoader loader =new FXMLLoader();
            loader.setLocation(MainApp.class.getResource("view/PreferencesDialog.fxml"));
           // AnchorPane page = (AnchorPane) loader.load();

//start
loader.getController(database.getText("bla"));

/ende

            Parent page =(Parent) loader.load();

           // Create the dialog Stage.
            Stage dialogStage =new Stage();

            dialogStage.setTitle("Edit Person");
            dialogStage.initModality(Modality.APPLICATION_MODAL);// sperrt
                                                                   // andere
                                                                   // Fenster
            dialogStage.initOwner(primaryStage);
            Scene scene =new Scene(page);
            dialogStage.setScene(scene);


            dialogStage.showAndWait();

       }catch([URL='http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+ioexception']IOException[/URL] e){
            e.printStackTrace();
       }
   }
 

Flown

Administrator
Mitarbeiter
Hier hast du die Doku.
Ich kann dir sagen, dass keiner hier das für dich ausprogrammiert.

Java:
<MyController> controller = loader.getController();
//Im Controller sollte eine setTextField-Methode sein
controller.setTextField("This is another String");
 

gr33nhat

Mitglied
Habe es nach Flowns Vorschlag nun versucht zu realisieren. Jedoch kommt nun auch mit getController() die alte Fehlermeldung.

MainApp.java
Java:
public void showPreferencesDialog() {
        try {

            // Load the fxml file and create a new stage for the popup dialog.
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(MainApp.class.getResource("view/PreferencesDialog.fxml"));
            // AnchorPane page = (AnchorPane) loader.load();
            Parent page = (Parent) loader.load();

            PreferencesDialogController controller = loader.getController();
            controller.setTextField("hallo");



            // Create the dialog Stage.
            Stage dialogStage = new Stage();

            dialogStage.setTitle("Edit Person");
            dialogStage.initModality(Modality.APPLICATION_MODAL); // sperrt
                                                                    // andere
                                                                    // Fenster
            dialogStage.initOwner(primaryStage);
            Scene scene = new Scene(page);
            dialogStage.setScene(scene);


            dialogStage.showAndWait();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

PreferencesDialogController.java
Java:
public class PreferencesDialogController {

    @FXML
    private static TextField database;

    @FXML
    private static TextField csvName;

    private static String database2;

    private static String csvName2;

    public static String getCsvName2() {
        return csvName2;
    }

    public static void setCsvName2(String csvName2) {
        PreferencesDialogController.csvName2 = csvName2;
        System.out.println("");
    }

    public static void setTextField(String Text) {
        System.out.println(Text);
        database.setText(Text);
    }

Fehlermeldung:
Code:
Einstellungen
hallo
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(Unknown Source)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(Unknown Source)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
    at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
    at javafx.event.Event.fireEvent(Unknown Source)
    at javafx.scene.control.MenuItem.fire(Unknown Source)
    at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(Unknown Source)
    at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$341(Unknown Source)
    at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer$$Lambda$186/437512393.handle(Unknown Source)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(Unknown Source)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
    at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
    at javafx.event.Event.fireEvent(Unknown Source)
    at javafx.scene.Scene$MouseHandler.process(Unknown Source)
    at javafx.scene.Scene$MouseHandler.access$1500(Unknown Source)
    at javafx.scene.Scene.impl_processMouseEvent(Unknown Source)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Unknown Source)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$350(Unknown Source)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$169/1610150481.get(Unknown Source)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(Unknown Source)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Unknown Source)
    at com.sun.glass.ui.View.handleMouseEvent(Unknown Source)
    at com.sun.glass.ui.View.notifyMouse(Unknown Source)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$145(Unknown Source)
    at com.sun.glass.ui.win.WinApplication$$Lambda$36/2117255219.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.reflect.misc.Trampoline.invoke(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
    ... 47 more
Caused by: java.lang.NullPointerException
    at de.gr33nhat.dbeXtract.view.PreferencesDialogController.setTextField(PreferencesDialogController.java:34)
    at de.gr33nhat.dbeXtract.MainApp.showPreferencesDialog(MainApp.java:120)
    at de.gr33nhat.dbeXtract.view.RootLayoutController.showPreferences(RootLayoutController.java:52)
    ... 56 more


Auch nochmal es zu erwähnen. Ich suche niemand, der mir das Programm schreibt. Aber ich blicke es einfach an der Stelle nicht.
Und verstehe einfach nicht, wieso alles richtig übergeben wird aber dann beim füllen des Textfeldes das Programm abstürzt.

Wie gesagt, wenn ich jetzt einen Button einfügen würde der die Methode aufruft ändert sich das Textfeld. Wieso dann nicht beim erstellen?
 

Flown

Administrator
Mitarbeiter
Dein TextField ist noch null! Das heißt deine FXML ist noch nicht geladen. HIER:
Code:
Caused by: java.lang.NullPointerException
    at de.gr33nhat.dbeXtract.view.PreferencesDialogController.setTextField(PreferencesDialogController.java:34)
    at de.gr33nhat.dbeXtract.MainApp.showPreferencesDialog(MainApp.java:120)
    at de.gr33nhat.dbeXtract.view.RootLayoutController.showPreferences(RootLayoutController.java:52)
 

gr33nhat

Mitglied
Also habe nun mein Problem gefunden. Nochmals herzlichsten Dank @Flown.

Hier die Lösung:

Erstmal mit der Controller-Klasse Initializable implementieren.

Java:
@Override
    public void initialize(URL location, ResourceBundle resources) {
        // Hier können dann die alternativtexte geladen werden wie z.B. blabla.setTitle("hallo");
}

Die Nullpointer exception war ein Eingabefehler von mir.
Hier habe ich promtText mit fx:id verwechselt. Jedoch habe ich hier natürlich zuletzt gesucht.

Danke nochmal und einen schönen Mittwoch
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
0 Ist "sequence.fallback" aus den font.properties zur Laufzeit änderbar AWT, Swing, JavaFX & SWT 0
MiMa Properties AWT, Swing, JavaFX & SWT 1
T JavaFX Allgemeine Fragen zu JavaFX (uA zu Properties) AWT, Swing, JavaFX & SWT 6
kaoZ Swing JMenuBar, Preferences, Properties... und viele andere lustige Dinge (Best Practice) AWT, Swing, JavaFX & SWT 15
F JavaFX Properties und NULL Werte AWT, Swing, JavaFX & SWT 2
R Einbinden von Properties für Swing (Beschriftungen etc.) AWT, Swing, JavaFX & SWT 2
loadbrain Probleme mit Properties load AWT, Swing, JavaFX & SWT 5
F Settings (bzw. Properties) über GUI ändern? AWT, Swing, JavaFX & SWT 2
JavaSchmecktLecker JavaFX JavaFX Ordner automatisch verlinken AWT, Swing, JavaFX & SWT 2
berserkerdq2 Skalieren sich javafx objekte automatisch auf die Bildschirmgröße AWT, Swing, JavaFX & SWT 6
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
G JavaFX Wert aus DB lesen, wenn erfolgreich automatisch eine fxml laden, möglich? AWT, Swing, JavaFX & SWT 2
B JavaFX TableView-Zellen sollen automatisch so groß wie der größte Inhalt sein AWT, Swing, JavaFX & SWT 6
F JavaFX textField Ausgabe automatisch kopieren AWT, Swing, JavaFX & SWT 7
J Gridpane Breite in Scrollpane automatisch anpassen AWT, Swing, JavaFX & SWT 2
L ComboBox Wert automatisch auswählen AWT, Swing, JavaFX & SWT 6
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
I CSS - backgroundImage - Größe automatisch an den Container anpassen AWT, Swing, JavaFX & SWT 1
P TreeView automatisch an große von Inhalt anpassen AWT, Swing, JavaFX & SWT 3
L Java FX Scrollpane automatisch resizen AWT, Swing, JavaFX & SWT 3
S Swing Bedienelemente ordnen sich automatisch neu an AWT, Swing, JavaFX & SWT 2
J JTextfield automatisch aus zweiter Klasse aktualisieren AWT, Swing, JavaFX & SWT 5
S Buttons und TextField automatisch vergrößern AWT, Swing, JavaFX & SWT 8
KilledByCheese 2D-Grafik Feld automatisch bewegen, in zeitabständen AWT, Swing, JavaFX & SWT 7
C AWT Textfelder werden nicht automatisch angezeigt AWT, Swing, JavaFX & SWT 2
W Bei Programmstart jRadioButton automatisch auswählen AWT, Swing, JavaFX & SWT 2
S JavaFX Fenstergrösse automatisch Speichern und Laden AWT, Swing, JavaFX & SWT 4
2 Zeit Differenz automatisch aktualisieren AWT, Swing, JavaFX & SWT 1
C Geloest: JTextfield: Titel automatisch entfernen, sobald Text eingegeben wird AWT, Swing, JavaFX & SWT 1
H AWT Fenster- und JLabel-Größe automatisch anpassen AWT, Swing, JavaFX & SWT 2
S Swing Automatisch 2px Rahmen in Windows 8 AWT, Swing, JavaFX & SWT 0
G Swing ComboBoxItem automatisch wählen AWT, Swing, JavaFX & SWT 4
B Swing Form undecorated: Beim Bewegen geht die Maus immer automatisch zur linken Seite. AWT, Swing, JavaFX & SWT 7
I JTable Spalten automatisch dem Inhalt anpassen! AWT, Swing, JavaFX & SWT 6
0 JTable Spaltenbreite automatisch an Inhalt anpassne geht nicht AWT, Swing, JavaFX & SWT 3
A combobox automatisch in ein textfeld wechseln AWT, Swing, JavaFX & SWT 3
K JSpinner in passender Breite erstellen oder automatisch anpassen AWT, Swing, JavaFX & SWT 2
C TextFeld in Verbindung zur ComboBox automatisch aktualisieren AWT, Swing, JavaFX & SWT 7
D JTable width automatisch anpassen AWT, Swing, JavaFX & SWT 4
R Swing Wie kann man Internal Frames automatisch ausrichten lassen? AWT, Swing, JavaFX & SWT 3
E JToggleButton automatisch nach drücken loslassen AWT, Swing, JavaFX & SWT 3
R Größe/Anordnung der Gui-Elemente automatisch? AWT, Swing, JavaFX & SWT 6
W Bildgröße automatisch an Komponenten anpassen AWT, Swing, JavaFX & SWT 3
B JScrollPane scrollt nicht immer automatisch AWT, Swing, JavaFX & SWT 2
C SWT-Elemente an View-Fenster angleichen und automatisch resizen AWT, Swing, JavaFX & SWT 3
B Fenstergröße automatisch skalieren AWT, Swing, JavaFX & SWT 7
C Textfeld automatisch befüllen AWT, Swing, JavaFX & SWT 6
R JTable: Spaltenbreite automatisch anpassen AWT, Swing, JavaFX & SWT 3
J SWT Dialog in Dialog automatisch öffnen AWT, Swing, JavaFX & SWT 19
W LayoutManager GridBag richtig nutzen - Komponenten richtig anordnen und automatisch vergrößern AWT, Swing, JavaFX & SWT 5
X JEditorPane Größe in JDialog automatisch anpassen AWT, Swing, JavaFX & SWT 2
U JComboBox automatisch zuklappen AWT, Swing, JavaFX & SWT 7
Y JCheckBoxen automatisch anlegen AWT, Swing, JavaFX & SWT 6
M Swing Eingabe auf JTextField automatisch ausgeben auf JLabel AWT, Swing, JavaFX & SWT 2
J Swing JList: Neue Zeilen mit fireIntervalAdded sind automatisch selektiert AWT, Swing, JavaFX & SWT 2
M LayoutManager JTextfield vergrößern sich automatisch AWT, Swing, JavaFX & SWT 4
T Swing Dialoginhalt automatisch anpassen während Größenänderung AWT, Swing, JavaFX & SWT 2
N ActionListener automatisch selektieren AWT, Swing, JavaFX & SWT 6
N JFrame mit Elementen an die Bildschirmgröße automatisch anpassen AWT, Swing, JavaFX & SWT 3
aze JTable automatisch vergrößern wenn das zugehörige JFrame vergrößert wird AWT, Swing, JavaFX & SWT 13
F Button soll automatisch geklickt werden AWT, Swing, JavaFX & SWT 3
R JSplitPane automatisch ausblenden AWT, Swing, JavaFX & SWT 13
H Schriftgröße automatisch an JLabel anpassen AWT, Swing, JavaFX & SWT 6
S JTable Float Column fuegt automatisch Punkt hinzu wenn man Zahlen eingibt. AWT, Swing, JavaFX & SWT 21
G SWT - TextFeld automatisch aktualisieren AWT, Swing, JavaFX & SWT 15
G JSplitPane unf JTable automatisch anpassen AWT, Swing, JavaFX & SWT 2
K JFrame + 2 Bildschirme -> automatisch auf einem Bildschir AWT, Swing, JavaFX & SWT 5
A Programm automatisch in den Vordergrund AWT, Swing, JavaFX & SWT 5
G jTable, spezille Zelle automatisch füllen AWT, Swing, JavaFX & SWT 13
S JList automatisch scrollen AWT, Swing, JavaFX & SWT 8
J JScrollPane soll automatisch zu einem punkt scrollen AWT, Swing, JavaFX & SWT 4
G Textarea soll automatisch mitrollen AWT, Swing, JavaFX & SWT 2
Z JTable automatisch zu einer Zeile scrollen AWT, Swing, JavaFX & SWT 4
S Frame grösse automatisch anpassen? AWT, Swing, JavaFX & SWT 1
K Automatisch einen Dialog schliessen AWT, Swing, JavaFX & SWT 15
J resize eines Bildes automatisch berechnen lassen? AWT, Swing, JavaFX & SWT 2
G Größe von SWT-Label automatisch anpassen AWT, Swing, JavaFX & SWT 5
D JTree - Knoten einfügen und automatisch in den Editiermodus AWT, Swing, JavaFX & SWT 2
S JScrollPane > JPanel - automatisch scrollen AWT, Swing, JavaFX & SWT 2
Z Java Applet Fenster automatisch an Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 4
T Datum in Textfeld automatisch formatieren AWT, Swing, JavaFX & SWT 8
R Tree automatisch öffnen AWT, Swing, JavaFX & SWT 7
N Tree automatisch öffnen AWT, Swing, JavaFX & SWT 2
G Wie schließen Fenster automatisch? AWT, Swing, JavaFX & SWT 12
S JCOntentPane ist automatisch groß? AWT, Swing, JavaFX & SWT 6
R JTable zu einem bestimmten Eintrag automatisch scrollen? AWT, Swing, JavaFX & SWT 2
S Namen von automatisch erzeugten JTextFields herausfinden… AWT, Swing, JavaFX & SWT 4
Z Column Breite in JTable automatisch an Inhalt anpassen AWT, Swing, JavaFX & SWT 3
R JTable, automatisch im Edit Modus AWT, Swing, JavaFX & SWT 2
thE_29 JFrame automatisch maximiert darstellen AWT, Swing, JavaFX & SWT 7
M JScrollPane soll automatisch scrollen AWT, Swing, JavaFX & SWT 5
V Ein JPEG-Bild in einem Label automatisch anpassen AWT, Swing, JavaFX & SWT 6
A JButton automatisch akivieren? AWT, Swing, JavaFX & SWT 7
T jComboBox automatisch ausklappen AWT, Swing, JavaFX & SWT 5
Z JTextArea in JScrollPane automatisch scrollen AWT, Swing, JavaFX & SWT 2
G JTable: Spaltenbreite automatisch setzen AWT, Swing, JavaFX & SWT 4
B Wert bei JFormattedTextField automatisch aktualisieren AWT, Swing, JavaFX & SWT 2
G JTable automatisch scrollen AWT, Swing, JavaFX & SWT 4
P JSlider automatisch bewegen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben