JComboBoxにArrayListを設定する必要があります。これを行う方法はありますか?
combo boxをarray listで埋めるエレガントな方法:
List<String> ls = new ArrayList<String>();
jComboBox.setModel(new DefaultComboBoxModel(ls.toArray()));
これを解決する方法に関する受け入れられた答えや@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);
DefaultComboBoxModel dml= new DefaultComboBoxModel();
for (int i = 0; i < <ArrayList>.size(); i++) {
dml.addElement(<ArrayList>.get(i).getField());
}
<ComboBoxName>.setModel(dml);
理解しやすいコード。必要に応じて編集<>。
ArrayListを使用して新しいベクターを作成し、それをJComboboxコンストラクターに渡すことができると思います。
JComboBox<String> combobox = new JComboBox<String>(new Vector<String>(myArrayList));
私の例は文字列のみです。
既存の回答( this one および this one )を組み合わせることで、ArrayList
をJComboBox
に追加する適切なタイプセーフな方法は次のとおりです。 :
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);
この簡単なコードを確認してください
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();
}
}