web-dev-qa-db-ja.com

JComboBoxにArrayListを設定するにはどうすればよいですか?

JComboBoxにArrayListを設定する必要があります。これを行う方法はありますか?

20
Abdul Khaliq

ArrayListクラスのtoArray()メソッドを使用して、それをJComboBoxのコンストラクターに渡します

詳細については、 JavaDoc および tutorial を参照してください。

22
ecounysis

combo boxarray listで埋めるエレガントな方法:

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

これを解決する方法に関する受け入れられた答えや@fivetwentysixのコメントは好きではありません。これを行うための1つの方法がありますが、toArrayを使用するための完全なソリューションは提供されません。 toArrayを使用し、正しい配列とサイズの配列である引数を指定して、Object配列にならないようにする必要があります。オブジェクト配列は機能しますが、強く型付けされた言語でのベストプラクティスではないと思います。

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

あるいは、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);

理解しやすいコード。必要に応じて編集<>。

3
Athif Shaffy

ArrayListを使用して新しいベクターを作成し、それをJComboboxコンストラクターに渡すことができると思います。

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

私の例は文字列のみです。

3
stevoblevo

既存の回答( this one および this one )を組み合わせることで、ArrayListJComboBoxに追加する適切なタイプセーフな方法は次のとおりです。 :

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

GUIコードでは、次のようにリスト全体をJComboBoxに設定します。

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

この簡単なコードを確認してください

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