Toon posts:

[JAVA] ComboBox wordt niet geupdated

Pagina: 1
Acties:

Verwijderd

Topicstarter
In onderstaande code wordt een combobox gevuld vanuit een vector. Dit werkt prima, maar wanneer ik wat toevoeg aan de vector en daarna de combobox opnieuw wil vullen (vanuit de vector) dan werkt het niet. De combobox geeft dan niet de toegevoegde items weer. Alleen de waarden die aan het begin zijn toegevoegd. Ik heb de vector uitgelezen en die wordt wel goed gevuld. Het lijkt erop dat de waarden in het geheugen blijven staan.
Hoe kan dit opgelost worden? En wat doe ik verkeerd?


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 public void createTbWerknemers()
   {
        removeAll();

        Vector theRowVector;
        Vector vecAlleWerknemers = new Vector();
        vecAlleWerknemers = controller.getAlleWerknemers();

        JComboBox cb = new JComboBox();
        cb.removeAllItems();

        System.out.println("=========== Vector Tabbladen");
        for (int i=0; i<vecAlleWerknemers.size(); i++)
        {
            theRowVector = new Vector();
            theRowVector = (Vector) vecAlleWerknemers.elementAt(i);

            String naam = (String) theRowVector.elementAt(2) + ", " + (String) theRowVector.elementAt(1) + " (" + (String) theRowVector.elementAt(0) + ")";
            System.out.println(naam);
            cb.addItem(naam);
        }

        btnWnToevoegen.addActionListener(this);
        btnWnToevoegen.setPreferredSize(new Dimension(200, 50));
        pnlWerknemers.add(btnWnToevoegen, BorderLayout.PAGE_START);
        pnlWerknemers.add(cb, BorderLayout.CENTER);
        add(pnlWerknemers);

        repaint();
   }

  • jopie1983
  • Registratie: November 2003
  • Laatst online: 25-02-2024
Het probleem ligt er waarschijnlijk in dat je items op een verkeerde manier toevoegt. De combobox 'weet' dus niet wanneer hij een nieuwe inhoud heeft. Repaint zal dit niet updaten, omdat de combobox nog altijd 'denkt' dat het met zijn oude inhoud bezig is. Ik ben er niet zeker van, maar 9/10 is dat wat er aan de hand is. :)
Een manier waarop je dit kunt oplossen is door gebruik te maken van een zogenaamd DataModel. Als je in de API kijkt zal je zien dat er ook een constructor van is voor JComboBox met een ComboBoxModel. Als je dit model gebruikt, zal het model de combobox vertellen dat hij een nieuwe inhoud heeft. Dit gebeurt door het sturen van een event naar de combobox en normaal zal de combobox dan zijn inhoud aanpassen.

  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 27-05 10:14

Eelke Spaak

- Vlad -

Wanneer je een item toevoegt aan je Vector moet je hem ook nog toevoegen aan je combobox.

TheStreme - Share anything with anyone


Verwijderd

Kun je niet gewoon de control methode Refresh gebruiken :X