Swing implementierungs-technische Frage zu JList/AbstractListModel

Dr.Colossos

Mitglied
Hi,

ich hätte eine Frage an die Java-Profis.

Ich kann ja einer Swing-JCombobox ein Model übergeben, dass z.B. aus einem Vector von Personen erstellt wurde, pseudocode-mäßig in dieser Art.

Java:
myPersons = new Vector();

myPersons.add("Hans", "Meier");
myPersons.add("Hugo", "Schlossgespenst");
myPersons.add("Martha", "Pfahl");

myModel = new DefaultComboBoxModel(myPersons);

jComboBox.setModel(myModel);

... und fertig ist meine ComboBox mit Inhalt.

Was ich nicht verstehe ist, wie es Java/Swing gelingt, dass wenn ich nun eine der Personen ändere, die Combobox automatisch upgedated wird, z.B. ...

Java:
myPersons.getElementAt(0).setLastName("newLastName");

Ohne extra Zutun ist der ComboBox-Inhalt aktualisiert.

Ich weiß an dem (DefaultComboBox)Model hängen Listener, aber nicht doch an meiner (eigens-gebastelten) Person-Klasse. Wie weiß der Vector (Basis des Models) bzw. das Model selbst dass sich ein Person-Objekt geändert hat?

Wer kann mir das erklären, wo da ein Listener hängt, und von wo aus der angesteuert wird?

Besten Dank im Voraus!
 
S

SlaterB

Gast
nur mit
> myPersons.getElementAt(0).setLastName("newLastName");
wird sich die GUI doch nicht ändern oder?
da muss irgendein höherer Befehl wirklich noch der JComboBox sagen, dass sie sich neu zeichnen soll,
das Model kann das z.B. per fireContentsChanged()-Methode ihrem Listener, der JComboBox, mitteilen,

und danach ist nicht mehr viel Magie, die JComboBox malt einfach den aktuellen Zustand des Vectors/ der Elemene darin,
was vorher gezeichtet wurde und ob sich was geändert ist, interessiert da kaum
 

Dr.Colossos

Mitglied
[...]
nur mit
> myPersons.getElementAt(0).setLastName("newLastName");
wird sich die GUI doch nicht ändern oder?
[...]

Doch! Also ich hab das mal schnell in Netbeans zusammen gehacked, ich weiß nicht ob mir da sowas (z.B. duch den Code-Generator) abgenommen wird, aber ich hab keine message an das Model oder die ComboBox oder sonst was geschickt - einfach nur ein call an Person::setLastname, und die Liste hat den neuen Namen angezeigt.

Hintergrund ist, ich will ein ähnliches Verhalten in einem Framework einer anderen Programmiersprache erreichen (Stichwort Winbinder/PHP ... bitte, keine Diskussion über die Sinnhaftigkeit dessen :autsch:).

Ich könnte auch working (Java) code posten, dauert aber noch, bin in der Arbeit.

Kann sich sonst wer diesen Automatismus erklären?

Besten Dank!
 

KrokoDiehl

Top Contributor
Also dass eine Änderung in der Liste "ordentlich" zur GUI getragen wird, bezweifle ich in dem Fall auch. Aber ich vermute, dass es nur so aussieht, als würde das geschehen. Durch erneutes Öffnen oder irgendeine andere Aktion wird bei dir ggfs etwas ausgelöst, was die Werte des Vektors neu einliest.

Ich kenne das zB bei einer JList: Wenn man hier einen Eintrag in der zugrunde liegenden Liste (nicht im ListModel!) ändert, dann sieht man erstmal nichts Neues in der GUI. Wenn man aber das Fenster vergrößert oder sonstwie einen repaint provoziert, dann taucht der neue Wert auf.
Ich vermute, dass etwas ähnliches bei dir die Änderung sichtbar macht.
 
S

SlaterB

Gast
vielleicht findet die Änderung auch direkt am Anfang statt, bis zum Öffnen des Fensters vergehen noch 50-500ms,
da darf man die Übergabe an das Model nicht als die harte Grenze sehen,

erst wenn das Fenster paar Sekunden sichtbar ist und dann bei einem Buttonklick nicht viel mehr als die eine Änderung passiert, dann sollte sich das genau NICHT auf die Anzeige auswirken,
bzw. wie KrokoDiehl schrieb nur nach gewissen repaint-Situationen, wobei vielleicht nicht mal dann, ist auch möglich dass die Anzeige gecacht wird
(Vermutung)
 

Dr.Colossos

Mitglied
[...]
Ich vermute, dass etwas ähnliches bei dir die Änderung sichtbar macht.
[...]

Hmm, könnte sein. In meinem Test habe ich den Eintrag duch einen Button-Klick gändert - sozusagen, onclick -> myPerson.setLastName("newValue");

Ich werd das evtl. mal über einen Timer lösen, der einfach nach x Sekunden eine Person ändert, ohen jegliche User/GUI-Interaktion.

Ich konnte mir das bisher echt nicht erklären - pure magic - so mächtig hätte ich Java nicht eingeschätzt, und war echt schwer beeindruckt/verwundert obgleich dieser "Funktionalität" (aka Illusion).

Danke sehr!
 
S

SlaterB

Gast
Button sollte auch reichen, einfach ein Testprogramm zusammenstellen,
wobei dann natürlich sein kann, dass es sich bei anderen anders verhält
 

Dr.Colossos

Mitglied
Hi,

ich habs nochmal durch den Debugger gejagt. Ihr hattet recht, es liegt am AWT-Thread, der das ab und an einfach neu zeichnet, und da dann die "neue" Person zieht.

Danke sehr

[CLOSED]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
T AWT Frage zu AWT AWT, Swing, JavaFX & SWT 5
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
F unspezifizierte Frage zu JTable/ Model AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
P Kurze Frage zur Gestaltung eines vertikalen Menüs AWT, Swing, JavaFX & SWT 2
Dit_ Frage zum Thema SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 5
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
G Frage zu processMouseEvent AWT, Swing, JavaFX & SWT 6
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
C Event Frage AWT, Swing, JavaFX & SWT 7
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4
F Frage zu WindowListeners AWT, Swing, JavaFX & SWT 2
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
C Frage zu ActionListenern AWT, Swing, JavaFX & SWT 7
D Frage @ someActionEvent.getActionCommand() AWT, Swing, JavaFX & SWT 2
Kr0e Allgemeine Frage zu Java2D (Eigene Impl.) AWT, Swing, JavaFX & SWT 18
L Einfache Layout Frage für Applet -> Was mache ich bloss falsch? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben