Мне нужно заполнить JComboBox ArrayList. Есть какой-либо способ сделать это?Как заполнить JComboBox с помощью ArrayList?
ответ
Для дальнейшего использования:
//first create the array;
String[] comboBoxArray = {"item1","item2","item3"};
//create JComboBox and assign it to the comboBox
JComboBox comboBox1 = new JComboBox(comboBoxArray);
Это не отвечает на вопрос вообще. Он хочет знать, как это сделать с помощью ArrayList, а не с примитивным массивом типов. – sage88
я думаю, что это решение
ArrayList<table> libel = new ArrayList<table>();
try {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session s = sf.openSession();
s.beginTransaction();
String hql = "FROM table ";
org.hibernate.Query query = s.createQuery(hql);
libel= (ArrayList<table>) query.list();
Iterator it = libel.iterator();
while(it.hasNext()) {
table cat = (table) it.next();
cat.getLibCat();//table colonm getter
combobox.addItem(cat.getLibCat());
}
s.getTransaction().commit();
s.close();
sf.close();
} catch (Exception e) {
System.out.println("Exception in getSelectedData::"+e.getMessage());
Это невероятно запутанно. Эта проблема может быть решена с помощью двух строк кода без необходимости в этом беспорядке. – sage88
Мне не нравится принятый ответ или @ fivetwentysix в комментарии о том, как решить эту проблему. Он получает один метод для этого, но не дает полного решения использовать toArray. Вам нужно использовать toArray и дать ему аргумент, который представляет собой массив правильного типа и размера, так что вы не получите массив объектов. Пока массив объектов будет работать, я не думаю, что это лучшая практика на строго типизированном языке.
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);
Элегантный способ заполнить поле со списком с списка массива:
List<String> ls = new ArrayList<String>();
jComboBox.setModel(new DefaultComboBoxModel(ls.toArray()));
Я не пробовал это, но похоже, что вы закончите заполнение jComboBox массивом Object, а не массивом String, используя этот подход. – sage88
Я считаю, вы можете создать новый вектор с помощью ArrayList и передать в JComboBox Конструктор.
JComboBox<String> combobox = new JComboBox<String>(new Vector<String>(myArrayList));
Мой пример - это только строки.
DefaultComboBoxModel DLM = new DefaultComboBoxModel();
for (int i = 0; i < <ArrayList>.size(); i++) {
DLM.addElement(<ArrayList>.get(i).getField());
}
<ComboBoxName>.setModel(DLM);
Понятный код.Edit <> по мере необходимости.
Если вы делаете что-то вроде ArrayList. в вашем классе Person вы можете определить toString(), который будет настраивать то, что ваше значение для ComboBox. Кроме того, вам может потребоваться объявить переменную массива как Object [] (вместо String []) при использовании ArrayList.toArray(). –
fivetwentysix
В учебнике нет примеров с arraylist – Lobato