Swing Mittels GUI Werte aus Property-File ändern

Zwicke85

Mitglied
Hallo liebe Forengemeinde,

ich schreibe an einer GUI mittels Jigloo.
Sie zeigt über eine GUI Variablen an, die in einem Property-File stehen. Das klappt auch soweit.
Gibt nun der Anwender einen neuen Wert in die GUI ein, so horcht ein PropertyChangeListener darauf und soll den neuen Wert in das File schreiben. Leider wirft er mir eine Null Pointer exception (siehe unten) und speichert nichts in das File. Habt ihr eine Idee warum?

Vielen Dank vorab für Eure Vorschläge

Viele Grüße
Antje

P.S. die NullpointerException ist nicht das Problem. Vermute ihren Hintergrund. (s. Beitrag unten)
Java:
public static void main(String[] args) {
	SwingUtilities.invokeLater(new Runnable() {
	   public void run() {
		CEPFrame inst = new CEPFrame();
		inst.setLocationRelativeTo(null);
		inst.setVisible(true);
	    }
         });
}
	
public CEPFrame() {
	super();
	initGUI();
	}

private void initGUI() {
	  ...
	final Properties propGUI = new Properties();
	try {
             propGUI.load(this.getClass().getResourceAsStream("/statement.properties"));
	} catch (IOException e1) {
	    e1.printStackTrace();
	}
	  ...
	String brands =  propGUI.getProperty("brands");
	  ...
   jTextField1.addPropertyChangeListener(new PropertyChangeListener() {
           public void propertyChange(PropertyChangeEvent evt) {
      		if (evt.getSource() == jTextField1){
			jTextField1.setText(evt.getNewValue().toString());
                        propGUI.setProperty("brands", evt.getNewValue().toString());
			try{
			FileOutputStream fos = new FileOutputStream("/statement.properties");
			propGUI.store(fos, "");
			}catch(Exception e){e.printStackTrace();}
                 }
            }
    }
      ...
}

Die Fehlermeldung lautet:

Java:
Exception in thread AWT-EventQueue-0 java.lang.NullPointerException
	at SocialMediaCEP.GUI.CEPFrame$8.propertyChange(CEPFrame.java384)
	at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
	at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
	at java.awt.Component.firePropertyChange(Unknown Source)
	at javax.swing.JComponent.removeNotify(Unknown Source)
	at javax.swing.text.JTextComponent.removeNotify(Unknown Source)
	at java.awt.Container.removeNotify(Unknown Source)
	at javax.swing.JComponent.removeNotify(Unknown Source)
	at java.awt.Container.removeNotify(Unknown Source)
	at javax.swing.JComponent.removeNotify(Unknown Source)
	at java.awt.Container.removeNotify(Unknown Source)
	at javax.swing.JComponent.removeNotify(Unknown Source)
	at java.awt.Container.removeNotify(Unknown Source)
	at javax.swing.JComponent.removeNotify(Unknown Source)
	at java.awt.Container.removeNotify(Unknown Source)
	at javax.swing.JComponent.removeNotify(Unknown Source)
	at java.awt.Container.removeNotify(Unknown Source)
	at javax.swing.JComponent.removeNotify(Unknown Source)
	at javax.swing.JRootPane.removeNotify(Unknown Source)
	at java.awt.Container.removeNotify(Unknown Source)
	at java.awt.Window.removeNotify(Unknown Source)
	at java.awt.Frame.removeNotify(Unknown Source)
	at java.awt.Window$1DisposeAction.run(Unknown Source)
	at java.awt.Window.doDispose(Unknown Source)
	at java.awt.Window.dispose(Unknown Source)
	at javax.swing.JFrame.processWindowEvent(Unknown Source)
	at java.awt.Window.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
 
Zuletzt bearbeitet:

Zwicke85

Mitglied
Hallo,

dies tritt beim Schließen des Fensters auf. Hier fehlt mir wohl noch eine Methode zum sauberen Beenden. Wie könnte die aussehen?

Zu meinem eigentlichen Problem, dass die Werte nicht im Property-File geändert werden:
Ich habe nun mitbekommen, dass das Event mir ja gar nicht den Text aus dem Feld übergibt, sondern Einstellungswerte des Textfeldes... Dadurch wird auch nie der innere Teil des If-Clause erreicht.
Benötige ich einen anderen Listener? Wie komme ich an den Text? Und wie komme ich an die Bezeichnung des Textfeldes für die Zuordnung, welches Feld gefeuert hat?

Vielen Dank vorab.

Viele Grüße
Antje
 
Zuletzt bearbeitet:

mjdv

Bekanntes Mitglied
Naja, beim Beenden kann ich jetzt shcon mal gar nicht nachvollziehen. Im StackTrace steht bei Zeile 384, die sehe ich aber eben nicht bzw. weiß nicht wo sie im kopierten Teil der Applikation ist.

Wenn das ein Einstellungsdialog werden soll, warum willst du dann jedes mal wenn der Nutzer den Text ändert sofort speichern?

Normalerweiße speichert man erst beim Klick auf Ok bzw. verwirft alles beim Klick auf Abbrechen.
 

Michael...

Top Contributor
Zu meinem eigentlichen Problem, dass die Werte nicht im Property-File geändert werden:
Vermutlich hast Du noch einen offenen Stream auf die Datei. Nach dem Laden und Speichern der Properties close() auf den jeweiligen Stream aufrufen.

Schreibe die Properties doch einmalig (aktives Speichern mittels Button oder Schließen der Anwendung...) raus und nicht nach jeder Änderung eines einzelnen Eintrags.

Versuchst Du etwa mit einem PropertyListener auf die Eingabe in einem TextFeld zu reagieren?
 

Zwicke85

Mitglied
Hallo,

Vermutlich hast Du noch einen offenen Stream auf die Datei. Nach dem Laden und Speichern der Properties close() auf den jeweiligen Stream aufrufen.
Du hast Recht. Die close()-Methode habe ich vergessen.

Schreibe die Properties doch einmalig (aktives Speichern mittels Button oder Schließen der Anwendung...) raus und nicht nach jeder Änderung eines einzelnen Eintrags.
Auch hier stimme ich dir zu. Das ist viel besser. Kann ich dann im ActionListener auf die Textfelder direkt zugreifen mit textfeld.getText() oder gibt es hierfür gesonderte Methoden?

Versuchst Du etwa mit einem PropertyListener auf die Eingabe in einem TextFeld zu reagieren?
Ja. :oops: Kein Wunder, dass ich nicht zu meinem Ziel komme...

Viiieeelen Dank. :applaus:
Das hat mir sehr geholfen.

Wie muss ich jetzt noch das endgültige Beenden einbetten?
Es gibt ja system.extit(0), das in dem WindowListener ausgeübt wird:
Java:
addWindowListener(new WindowAdapter(){
             public void windowClosing(WindowEvent evt){
                              System.exit(0);
             }
  });
Ist es richtig, den Listener im Konstruktor der GUI zu implementieren?
Ist noch etwas dabei zu beachten??

Vielen Dank vorab.

VG Antje
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L JavaFx Textformatierung mittels Datenbank und Funktion anpassen AWT, Swing, JavaFX & SWT 5
dtr84 JavaFX/OpenJFX mittels Apache Ivy einbinden (Java 11) AWT, Swing, JavaFX & SWT 18
P JavaFx - Progressbar - Füllen mittels mehreren Tasks AWT, Swing, JavaFX & SWT 0
G Bekomme ResultSet mittels ObservableList nicht ins TableView AWT, Swing, JavaFX & SWT 25
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
JavaMachtMichFertig JavaFX Gui - Löschbutton in Tabelle anzeigen, die mittels MySQL Abfrage gefüllt wird AWT, Swing, JavaFX & SWT 5
A befüllen eines JTables mittels Methode AWT, Swing, JavaFX & SWT 10
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
J Swing GUI-Einstellungen mittels Preferences AWT, Swing, JavaFX & SWT 2
J Rechtecke mittels getWidth AWT, Swing, JavaFX & SWT 1
M Repaint mittels Button richtig aufrufen klappt nicht AWT, Swing, JavaFX & SWT 1
T JFrame mittels Shortcut anzeigen AWT, Swing, JavaFX & SWT 2
E Client-Server mittels AWT AWT, Swing, JavaFX & SWT 27
A Swing Fenstergröße mittels Menü verändern AWT, Swing, JavaFX & SWT 3
U Swing JLabel bewegen mittels Thread AWT, Swing, JavaFX & SWT 3
R Swing Verschieben eines jButtons mittels MouseDragged AWT, Swing, JavaFX & SWT 4
N Wertanzeige mittels JSpinner AWT, Swing, JavaFX & SWT 3
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
C Swing Eine SWING-Anwendung mittels MVC AWT, Swing, JavaFX & SWT 4
M Liste mittels SwingWorker füllen klappt nicht AWT, Swing, JavaFX & SWT 10
B JLabel mittels Timer und setLocation verschieben AWT, Swing, JavaFX & SWT 3
B Grafiken in JLabel mittels html AWT, Swing, JavaFX & SWT 5
T HTML Seite neu laden mittels Applet AWT, Swing, JavaFX & SWT 2
G Zentrieren mittels setLocationRelativeTo(null);? AWT, Swing, JavaFX & SWT 14
Semox Setzen des Layout Managers mittels Override Parameter AWT, Swing, JavaFX & SWT 10
T JTable-Zelle mittels JFileChooser befüllen AWT, Swing, JavaFX & SWT 5
F JTextArea mittels Tab verlassen. AnyIdea? AWT, Swing, JavaFX & SWT 2
C Fragen zur Darstellung einer JTable mittels Renderer AWT, Swing, JavaFX & SWT 2
F Größenänderung mittels Maus - selbst implementieren? AWT, Swing, JavaFX & SWT 3
H Grafiken mittels Hashing vergleichen. aber wie? AWT, Swing, JavaFX & SWT 20
G Jtable mittels Liste füllen AWT, Swing, JavaFX & SWT 3
F Einlesen von text in textArea mittels for-schleife AWT, Swing, JavaFX & SWT 3
M JComboBox - Mittels FocusListener Event auslösen? AWT, Swing, JavaFX & SWT 4
B Vektorgrafik mittels Batik Tool anzeigen AWT, Swing, JavaFX & SWT 3
L Internationalisierung mittels ResourceBundle und Menu HotKey AWT, Swing, JavaFX & SWT 6
M Fenstertiteländerung mittels WindowAdapter AWT, Swing, JavaFX & SWT 5
H MouseEvent bei Drag & Drop (mittels TransferHandler) AWT, Swing, JavaFX & SWT 3
L Daten mittels ObjectInputStream ins JTable AWT, Swing, JavaFX & SWT 7
C JFreeChart X-Achse Werte skalieren, begrenzen, zoomen AWT, Swing, JavaFX & SWT 5
D ObservableList Werte hinzufügen AWT, Swing, JavaFX & SWT 7
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
P Adressbuch Werte speichern AWT, Swing, JavaFX & SWT 21
Blender3D Falsche Werte mit Java Toolkit Screensize AWT, Swing, JavaFX & SWT 4
B JavaFX JavaFX TableView PropertyValueFactory für Werte aus HashMap AWT, Swing, JavaFX & SWT 2
F RGB-Werte aus einem String einlesen AWT, Swing, JavaFX & SWT 26
emma_louisa JavaFX Werte beim Aufrufen des Fensters übernehmen (SceneBuilder) AWT, Swing, JavaFX & SWT 3
Arif Swing MouseMotionListener liefert falsche Werte ? AWT, Swing, JavaFX & SWT 7
G Werte aus dem GUI Auslesen AWT, Swing, JavaFX & SWT 8
N Swing JFormattedTextField keine Werte nach Formatzuweisung AWT, Swing, JavaFX & SWT 0
B JavaFX Werte aus eingefügtem Window lesen AWT, Swing, JavaFX & SWT 0
Augenblau JavaFX Wechselnde Werte in Label darstellen AWT, Swing, JavaFX & SWT 7
M Swing JFreechart zoom x-achse neue Werte AWT, Swing, JavaFX & SWT 4
P Swing JTable Werte auslesen bzw überschreiben AWT, Swing, JavaFX & SWT 5
L JTable Werte mulitiplizieren AWT, Swing, JavaFX & SWT 3
R AWT Werte aus NumberField vergleichen AWT, Swing, JavaFX & SWT 9
H org.eclipse.swt.widgets.Slider und negative Werte AWT, Swing, JavaFX & SWT 3
S ComboBox-Werte aus einem Array an Textfields übergeben AWT, Swing, JavaFX & SWT 3
N Input/Output Stream werte in Label anzeigen. AWT, Swing, JavaFX & SWT 6
F JavaFX Properties und NULL Werte AWT, Swing, JavaFX & SWT 2
A JFreeChart BarChart invertierte anzeige oder werte bereich von-bis AWT, Swing, JavaFX & SWT 4
A Swing Bestimmte Werte anzeigen JSlider() AWT, Swing, JavaFX & SWT 2
T label überschriebt seine werte-SWT AWT, Swing, JavaFX & SWT 3
E werte zurück in GUI schreiben AWT, Swing, JavaFX & SWT 4
S JTable - 2D ArrayList & Falsche Werte. AWT, Swing, JavaFX & SWT 3
E werte aus List auslesen AWT, Swing, JavaFX & SWT 2
C Swing Default Werte für JFormattedTextField und Eingaben zurücksetzen AWT, Swing, JavaFX & SWT 5
E Listener, werte in andere Klasse übernehmen AWT, Swing, JavaFX & SWT 11
K JTable Werte auslesen AWT, Swing, JavaFX & SWT 2
K JComboBox: Beim Einfügen neuer Werte ItemStateChanged blocken. AWT, Swing, JavaFX & SWT 2
S Swing Werte einer Jcheckbox aus eine Klasse A in eine Klasse B aufrufen AWT, Swing, JavaFX & SWT 6
P 2D-Grafik PaintComponent() übernimmt keine Werte aus update() AWT, Swing, JavaFX & SWT 8
B Die Werte von getLocation() im Label anzeigen AWT, Swing, JavaFX & SWT 4
J Swing jSlider nur auf bestimmte werte beschränken AWT, Swing, JavaFX & SWT 15
J JDialog verliert Werte AWT, Swing, JavaFX & SWT 3
T JTextField nur Double werte eingeben AWT, Swing, JavaFX & SWT 2
D Swing JTable Werte AWT, Swing, JavaFX & SWT 2
J Werte aus Combobox speichern AWT, Swing, JavaFX & SWT 3
F Swing JList doppelte werte AWT, Swing, JavaFX & SWT 3
A Swing JFrame Werte aus JDialog übergeben AWT, Swing, JavaFX & SWT 4
E Jtable Werte ohne Enter übernehmen AWT, Swing, JavaFX & SWT 9
F JComboBox gibt falsche werte AWT, Swing, JavaFX & SWT 3
P getMousePosition(): andere Werte als erwartet AWT, Swing, JavaFX & SWT 4
D Comboboxen werte Falsch. AWT, Swing, JavaFX & SWT 2
A TableRowSorter für double Werte mit Formatierung AWT, Swing, JavaFX & SWT 3
M Comboboxen in JTable - Werte auslesen AWT, Swing, JavaFX & SWT 9
calzone Swing JTable, Werte aktualisieren klappt nicht! AWT, Swing, JavaFX & SWT 7
R Swing JTable, werte speichern und laden AWT, Swing, JavaFX & SWT 25
G Alle Werte einer Spalte in JTable zusammenrechnen AWT, Swing, JavaFX & SWT 2
S JTable Werte werden nicht übernommen AWT, Swing, JavaFX & SWT 2
C Werte aus der Tabelle lesen AWT, Swing, JavaFX & SWT 4
K JSpinner - Model <-> View, unterschiedliche Werte AWT, Swing, JavaFX & SWT 9
A Werte in ein Textfeld übernehmen AWT, Swing, JavaFX & SWT 4
L JTextField Umwandeln in double-Werte AWT, Swing, JavaFX & SWT 5
P Bei Buttons Werte übergeben AWT, Swing, JavaFX & SWT 2
G eingegebene Werte einer JTable prüfen? Bitte helfen AWT, Swing, JavaFX & SWT 5
G Werte in Koordinatensystem zeichnen AWT, Swing, JavaFX & SWT 11
G ComboBox Werte auslesen uns setzen AWT, Swing, JavaFX & SWT 6
M JFormattedTextField und Null-Werte AWT, Swing, JavaFX & SWT 4
loadbrain auslesen der Werte dynamischer Textfields AWT, Swing, JavaFX & SWT 21

Ähnliche Java Themen

Neue Themen


Oben