[java]ComboBoxModel & Query

Pagina: 1
Acties:

  • Beyond
  • Registratie: Juni 2001
  • Laatst online: 07-05 23:36

Beyond

Dussssss.......

Topicstarter
Ik heb een jComboBox en deze moet waardes uit een database krijgen. Nu zag ik dat jComboBox ook met een ComboBoxModel werkt. Dit wil ik nu graag gaan gebruiken. Maar hoe werkt dit precies?

Ik heb het volgende al, alleen weet ik niet hoe ik die items nu aan de comboBox kan toevoegen...
of wat het model verwacht (list, vector, etc)

Iemand een oplossing?

Zo set ik het model:
Java:
1
comboKlant.setModel(getQueryComboModel());


getQueryComboModel() ziet er zo uit :
Java:
1
2
3
4
5
6
7
private ComboModel getQueryComboModel() { 
   if (comboBoxModel == null) { 
       comboBoxModel = new ComboModel(); 
       comboBoxModel.setQuery("SELECT naamKlant FROM Klanten"); 
   } 
    return comboBoxModel; 
}


En tot slot ziet mijn ComboModel class er zo uit:

Java:
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
31
32
33
34
import javax.swing.AbstractListModel; 
import javax.swing.ComboBoxModel; 

public class ComboModel extends AbstractListModel  implements ComboBoxModel   { 

    private Object selectedObject = null; 
     
    public ComboModel(){ 
         
         
    } 
     
    public void setQuery(String query){ 
         //Data uit database halen.
    } 
     
    public void setSelectedItem(Object item) { 
         
    } 
     
    public Object getElementAt(int i) { 
         
        return null; 
    } 
    public Object getSelectedItem() { 
        return selectedObject; 
    } 
     
    public int getSize() { 
         
        return 0; 
    } 
     
}

Al het goeie.......


  • drice
  • Registratie: December 2000
  • Laatst online: 16:09

drice

Loading...

Hoe je dat lijstje bijhoud maakt niks uit

Het gaat om de functies getElementAt(int index)
Hierbij haal je het zoveelste element uit je lijst en return je

Voor adden kun je zelf een methode maken

addMyElement(MyElement element){}

[ Voor 21% gewijzigd door drice op 22-04-2005 19:02 ]

Did you know that IF is a middle word in life. "Ja maar wie ben ik om aan mezelf te twijfelen"


  • Beyond
  • Registratie: Juni 2001
  • Laatst online: 07-05 23:36

Beyond

Dussssss.......

Topicstarter
Via die getElementAt haalt hij automatisch dus alle waarden uit de vector of list of waar je het ook in hebt gestopt, want die roep ik zelf niet aan.

Bedankt.

Ik ga het in een vector zetten. Is die extends AbstractListModel dan wel nodig?

Java:
1
public class ComboModel extends AbstractListModel  implements ComboBoxModel

[ Voor 37% gewijzigd door Beyond op 22-04-2005 20:08 ]

Al het goeie.......


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:46

Robtimus

me Robtimus no like you

Niet nodig, wel erg handig. Er staat nml alleen maar code in voor event listeners.

Misschien een tip: kijk naar DefaultComboBoxModel, en extend die misschien zelfs. Dan kun je die extra method setQuery gebruiken voor het vullen, en daarin de gewone DCBM methods zoals addElement gebruiken.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import javax.swing.*;  

public class ComboModel extends DefaultComboBoxModel
{
    public ComboModel()
    {
        // initialize
    }  
      
    public void setQuery(String query)
    {
        removeAllElements();
         // Data uit database halen. 
        ResultSet rs; // deze zet je dus
        while (rs.next())
        {
            addElement(<element based on current row>);
        }
    }  
}

[ Voor 44% gewijzigd door Robtimus op 22-04-2005 20:39 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Beyond
  • Registratie: Juni 2001
  • Laatst online: 07-05 23:36

Beyond

Dussssss.......

Topicstarter
Bedankt, dit werkt tot zover.
Nu komt er keurig in mijn combobox alle bedrijfsnamen te staan. Maar als ik
nu 1 selecteer moet ik het ID weten wat er bij hoort. Het kan voorkomen
dat 2 bedrijven dezelfde naam hebben maar die hebben dus verschillende ID's in de database.
Hoe kan ik dit doen?

Java:
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
public class ComboModel extends DefaultComboBoxModel 
{ 
        public ComboModel() 
    { 
        // initialize 
    }    
        
    public void setQuery(String query) 
    { 
        //Leeg maken 
        removeAllElements(); 
         // Data uit database halen. 
        try{ 
            DbConnection connect = new DbConnection(); 
            ResultSet rs = connect.executeQuery(query); 
             
            while (rs.next()) { 
                addElement(rs.getString("bedrijfsnaam")); 
            }     
             
            connect.closeConnection(); 
            }catch (Exception e){ 
                 
            }   
             
    }    
}

Al het goeie.......


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:46

Robtimus

me Robtimus no like you

Objecten in de combobox zetten, en dan die objecten een passende toString() geven. Een combobox kan nml niet alleen strings bevatten, maar alle objecten. De toString() wordt gebruikt om het af te beelden in de GUI.

More than meets the eye
There is no I in TEAM... but there is ME
system specs

Pagina: 1