JAVA: Textfelder auf verschiedenen Tabs per Observer synchronisieren

Dieses Thema JAVA: Textfelder auf verschiedenen Tabs per Observer synchronisieren im Forum "Windows XP Forum" wurde erstellt von Michael_B, 5. Dez. 2005.

Thema: JAVA: Textfelder auf verschiedenen Tabs per Observer synchronisieren Hi, ich schreib derzeit an einer GUI, die u. a. auf mehreren Tabs eines JTabbedPane jeweils die gleichen...

  1. Hi,

    ich schreib derzeit an einer GUI, die u. a. auf mehreren Tabs eines JTabbedPane jeweils die gleichen JTextField-Komponenten hat. Änderungen an diesen Werten möchte ich quasi zum Zeitpunkt der Änderung (also nicht erst nach der Eingabe, sondern nach der Eingabe eines Zeichens) überwachen - da hier nur ganze Zahlen eingegeben werden dürften.
    Dazu benutze ich den EventListener javax.swing.event.CaretListener der auf eine Veränderung des Cursors hört.
    Außerdem sollen die Werte in den Textfeldern AUF BEIDEN Tabs immer die gleichen sein; es soll also eine Änderung eines Wertes auf Tab1 automatisch auch auf Tab2 gemacht werden. Hierzu möchte ich das Beobachter-Pattern nutzen und bediene mich also dem Interface Observer und der Klasse Observable.
    Die Datenhaltung geschieht in der Klasse Properties, die Observable erweitert. Die Panels, die in die Tabs des JTabbedPane eingebaut werden, sind InputPanels und bekommen bei Konstruktion die in der Haupt-Klasse (Main) erzeugte Instanz von Properties übergeben. InputPanel implementiert Observer und meldet sich bei der Properties-Instanz auch als Observer an. Ebenfalls existiert die zur Implementierung notwendige Methode update(Observable o, Object arg).

    Klicke ich nun in eines der Eingabefelder, wird ein CaretEvent gefeuert. In der Methode, die das Event bearbeiten soll (caretUpdate(CaretEvent e)) setze ich die entsprechenden Werte der Properties-Instanz per entsprechender set-Methode (logischerweise von String auf int geparsed). Die set-Methode der Klasse Properties setzt den entsprechenden Wert, setzt ein Flag, dass etwas geändert wurde (setChanged()), und benachrichtigt danach seine Beobachter (notifyObservers()). Soweit die Theorie... in der Praxis bekomme ich jedoch schon bei Klick in das Eingabefeld folgende Exception:
    Da das Textfeld jedoch vor dem Klick in selbiges schon einen Wert hatte (in diesem Beispiel 20), verstehe ich nicht, warum der String, den ich zu einem int parsen möchte, leer ist.
    Gebe ich nun an der Stelle eine weitere 0 ein (mache also aus der 20 eine 200) bekomme ich
    Möglich, dass der CaretListener für meine Zwecke nicht der richtige ist. Wenn ihr da einen Vorschlag habt, immer her damit. Ansonsten wüsste ich gerne, warum der da versucht, nen leeren String zu parsen :-[

    Hier noch der Code der 3 Klassen zum Nachvollziehen:

    Main.java
    Properties.java
    InputPanel.java
    Bin über jeden Tipp dankbar...

    Lg
    Michael
     
Die Seite wird geladen...

JAVA: Textfelder auf verschiedenen Tabs per Observer synchronisieren - Ähnliche Themen

Forum Datum
Java Downloader lässt sich nicht sauber installieren Software: Empfehlungen, Gesuche & Problemlösungen 5. Okt. 2016
Ist Java runtime envirement 1.7.0 mit Java 6 verträglich? Windows XP Forum 11. Jan. 2016
Welchen Firefox und welche Java-Version ?? Windows 7 Forum 16. Dez. 2015
Java und Whatsapp "aktivieren" etwas Windows 7 Forum 18. Sep. 2015
Java Dateien werden geblockt Windows 7 Forum 20. Juni 2015