2009-11-24 6 views
1

Si l'utilisateur sélectionne l'élément dont l'index est 1 et le change de "123" à "abcd". Comment puis-je définir "abcd" au lieu de "123" (dans NetBeans)? Aussi comment puis-je supprimer l'article pour toujours?Editable JComboBox

+0

Que voulez-vous dire par set "ABCD". Voulez-vous changer la valeur de votre modèle? Si oui, quel modèle utilisez-vous? –

+0

Je veux dire que je veux changer "123" en "abcd", pour toujours. également j'utilise le modèle par défaut et avec setEditable (true) Je le fais comme un ComboBox modifiable – Johanna

+0

Étant donné que vous ne lisez pas les suggestions données dans vos autres publications, il semble que ce soit une perte de temps pour faire une suggestion dans cet article. – camickr

Répondre

1

Essayez les solutions suivantes. Lorsque l'utilisateur change une valeur ET appuie sur [ENTER], l'ancienne valeur est supprimée et la nouvelle est ajoutée.

Si vous devez remplacer la valeur à la même position, vous devrez fournir votre propre modèle qui prend en charge l'ajout de valeurs à une certaine position.

final DefaultComboBoxModel model = new DefaultComboBoxModel(new String[] {"Red", "Green", "Blue"}); 

comboBox = new JComboBox(model); 
comboBox.setEditable(true); 
comboBox.addActionListener(new ActionListener() { 
    private int selectedIndex = -1; 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     int index = comboBox.getSelectedIndex(); 
     if(index >= 0) { 
      selectedIndex = index; 
     } 
     else if("comboBoxEdited".equals(e.getActionCommand())) { 
      Object newValue = model.getSelectedItem(); 
      model.removeElementAt(selectedIndex); 
      model.addElement(newValue); 
      comboBox.setSelectedItem(newValue); 
      selectedIndex = model.getIndexOf(newValue); 
     } 
    } 
}); 
comboBox.setSelectedIndex(0); 
+0

Nice! mais avec votre code, je peux supprimer un élément pas plus que cela, pourquoi ?? – Johanna

+0

Vous êtes autorisé à déboguer le code vous-même pour voir ce qui se passe! – camickr

+0

Vous ne savez pas quand vous voulez supprimer la ligne ... Si vous voulez le supprimer lorsque l'utilisateur efface l'entrée, vérifiez cela avant de rajouter l'élément –

0

Lire le tutoriel How to Use Combo Boxes

Editable combo box, before and after the arrow button is clicked http://java.sun.com/docs/books/tutorial/figures/uiswing/components/EditableComboBoxMenuMetal2.png

zone de liste déroulante éditable, avant et après le bouton fléché est cliqué

Voir la: En utilisant une partie Combo éditable Box .

Snippet de cette page:

JComboBox patternList = new JComboBox(patternExamples); 
patternList.setEditable(true); 
patternList.addActionListener(this);