web-dev-qa-db-fra.com

Comment remplir un JComboBox avec une ArrayList?

J'ai besoin de remplir un JComboBox avec un ArrayList. Est-ce qu'il y a un moyen de faire ça?

20
Abdul Khaliq

Utilisez la méthode toArray() de la classe ArrayList et passez-la dans le constructeur de JComboBox

Voir JavaDoc et tutorial pour plus d'informations.

22
ecounysis

Manière élégante de remplir la liste déroulante avec une liste de tableaux :

List<String> ls = new ArrayList<String>(); 
jComboBox.setModel(new DefaultComboBoxModel(ls.toArray()));
18
Ivan Aracki

Je n'aime pas la réponse acceptée ou le commentaire de @ fivetwentysix sur la façon de résoudre ce problème. Il obtient une méthode pour ce faire, mais ne donne pas la solution complète à l'utilisation de toArray. Vous devez utiliser toArray et lui donner un argument qui est un tableau de type et de taille corrects afin de ne pas vous retrouver avec un tableau Object. Bien qu'un tableau d'objets fonctionne, je ne pense pas que ce soit la meilleure pratique dans un langage fortement typé.

String[] array = arrayList.toArray(new String[arrayList.size()]);
JComboBox comboBox = new JComboBox(array);

Alternativement, vous pouvez également conserver un typage fort en utilisant simplement une boucle for.

String[] array = new String[arrayList.size()];
for(int i = 0; i < array.length; i++) {
    array[i] = arrayList.get(i);
}
JComboBox comboBox = new JComboBox(array);
9
sage88
DefaultComboBoxModel dml= new DefaultComboBoxModel();
    for (int i = 0; i < <ArrayList>.size(); i++) {
        dml.addElement(<ArrayList>.get(i).getField());
    }

    <ComboBoxName>.setModel(dml);

Code compréhensible. Modifiez <> au besoin.

3
Athif Shaffy

Je crois que vous pouvez créer un nouveau vecteur à l'aide de votre ArrayList et le transmettre au constructeur JCombobox.

JComboBox<String> combobox = new JComboBox<String>(new Vector<String>(myArrayList));

mon exemple n'est que des chaînes cependant.

3
stevoblevo

En combinant les réponses existantes ( celle-ci et celle-ci ), le bon type de méthode sûre pour ajouter un ArrayList à un JComboBox est le suivant :

private DefaultComboBoxModel<YourClass> getComboBoxModel(List<YourClass> yourClassList)
{
    YourClass[] comboBoxModel = yourClassList.toArray(new YourClass[0]);
    return new DefaultComboBoxModel<>(comboBoxModel);
}

Dans votre code GUI, vous définissez la liste entière dans votre JComboBox comme suit:

DefaultComboBoxModel<YourClass> comboBoxModel = getComboBoxModel(yourClassList);
comboBox.setModel(comboBoxModel);
1
BullyWiiPlaza

Vérifiez ce code simple

import Java.util.ArrayList;
import javax.swing.JComboBox;
import javax.swing.JFrame;


public class FirstFrame extends JFrame{

    static JComboBox<ArrayList> mycombo;

    FirstFrame()
    {
        this.setSize(600,500);
        this.setTitle("My combo");
        this.setLayout(null);

        ArrayList<String> names=new ArrayList<String>();   
        names.add("jessy");
        names.add("albert");
        names.add("grace");
        mycombo=new JComboBox(names.toArray());
        mycombo.setBounds(60,32,200,50);
        this.add(mycombo);
        this.setVisible(true); // window visible
    }   

    public static void main(String[] args) {

        FirstFrame frame=new FirstFrame();  

    }

}
1
atishr