2011-01-06 4 views
20

Je récupère les valeurs de données de la base de données avec succès. Je les ai également stockés dans un tableau String[]. J'ai besoin de charger le tableau String en tant qu'éléments du JComboBox en réponse à l'action keyperformed. Comment puis-je recharger les éléments du JComboBox chaque fois que vous appuyez sur une touche car les valeurs extraites dépendent de la touche enfoncée. Plutôt simplement, j'ai besoin d'actualiser dynamiquement les éléments JComboBox.Dynamiquement changer JComboBox

Répondre

29
DefaultComboBoxModel model = new DefaultComboBoxModel(yourStringArray); 
comboBox.setModel(model); 
+0

Merci pour votre réponse, mais pouvez-vous s'il vous plaît poster un code pour illustrarte cela. Ce sera très utile. Je ne suis pas sûr de ce qu'il faut écrire dans la classe DefaultComboBoxModel. –

+0

C'est le code. Vous n'écrivez rien dans la classe DefaultComboBoxModel. Vous venez de créer le modèle en utilisant votre tableau de chaînes, puis ajoutez le modèle à la zone de liste déroulante. – camickr

6

Vous avez deux options. Vous pouvez utiliser removeAllItems() (ou l'une des autres méthodes de suppression) et addItem(Object anObject) pour manipuler les objets sélectionnables. Ou vous pouvez implémenter un ComboBoxModel et lui permettre de servir des données de votre tableau.

6

C'est la démo pour illustrer le modèle de zone de liste déroulante par défaut

public class ComboPanel extends JPanel { 

    JComboBox jcbo; 
    // this is constructor 
    public ComboPanel(ArrayList<String> items) { 
     jcbo = new JComboBox(); 
     // getting exiting combo box model 
     DefaultComboBoxModel model = (DefaultComboBoxModel) jcbo.getModel(); 
     // removing old data 
     model.removeAllElements(); 

     for (String item : items) { 
      model.addElement(item); 
     } 

     // setting model with new data 
     jcbo.setModel(model); 
     // adding combobox to panel 
     this.add(jcbo);  
    } 
} 

J'espère que cela vous aidera peu :)