Archief - [PROG][java] JComboBox doet vreemd bij toevoegen items

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

keybern

Legacy Member
ik heb een JTable waarbij ik aan de laatste kolom een eigen editor heb toegekend: simpel, eentje die een JComboBox toont.
Code:
...
TableColumn col = table.getColumnModel().getColumn(2);
col.setCellEditor(new MyComboBoxEditor(controller.getRoutes()));
...

public class MyComboBoxEditor extends DefaultCellEditor
	{
        public MyComboBoxEditor(Vector items) 
        {
            super(new JComboBox(items));
        }
}
Ik gebruik dus de constructor new JComboBox(Vector v)

Nu, telkens ik een object aan die vector toevoeg, begint m'n JComboBox vreemd te doen:
hij laat een lege dropdown list zien en als ik er dan erges randomly in klik, dan selecteert hij dat nieuwe toegevoegde element en wordt alles weer normaal.
Ik ga er dus vanuit dat de comboBox geupdate/genotified is want het nieuwe element staat nu wel in z'n dropdown.

Wat kan de reden zijn?

JBoss

Legacy Member
Probleem is dat je het onderliggende datamodel wijzigt van de JComboBox, maar de combobox zelf daar niet vanop de hoogte brengt. De JComboBox gebruikt eigen een MutableComboBoxModel voor de data, die aangemaakt wordt vanuit je vector. Dat object voorziet methodes om data te wijzigen die automatisch de UI op de hoogte brengen en aanpassen.

Dus wat je zoekt is eerder dit:

DefaultComboBoxModel model = new DefaultComboBoxModel(uwVector);
JComboBox box = new JComboBox(model);
model. insertElementAt("iets",4); //voorbeeld

keybern

Legacy Member
en wat als ik nou echt graag een vector of andere Collection zou willen gebruiken? Want nu zit ik met dieje DefaultComboBoxModel opgescheept.

Ik heb trouwens Observer-Obervable geïmplemeneert. Maar die verhelpt niets aan het probleem.

Ik ga er dus vanuit dat de comboBox geupdate/genotified is want het nieuwe element staat nu wel in z'n dropdown.

edit: even een screenie ter verduidelijking
miserie.png

JBoss

Legacy Member
Uw DataModel heeft vrijwel dezelfde semantics als een List. Je kan ook altijd alle items adden en removen van uw model als uw Vector veranderd. Maar dat zou niet erg performant kunnen blijken.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan