2009-08-18 2 views

ответ

16

Используйте toArray() метод класса ArrayList и передать его в конструктор JComboBox

Смотрите JavaDoc и tutorial для получения дополнительной информации.

+3

Если вы делаете что-то вроде ArrayList . в вашем классе Person вы можете определить toString(), который будет настраивать то, что ваше значение для ComboBox. Кроме того, вам может потребоваться объявить переменную массива как Object [] (вместо String []) при использовании ArrayList.toArray(). – fivetwentysix

+1

В учебнике нет примеров с arraylist – Lobato

0

Для дальнейшего использования:

//first create the array; 
String[] comboBoxArray = {"item1","item2","item3"}; 


//create JComboBox and assign it to the comboBox 
JComboBox comboBox1 = new JComboBox(comboBoxArray); 
+8

Это не отвечает на вопрос вообще. Он хочет знать, как это сделать с помощью ArrayList, а не с примитивным массивом типов. – sage88

-4

я думаю, что это решение

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()); 
+1

Это невероятно запутанно. Эта проблема может быть решена с помощью двух строк кода без необходимости в этом беспорядке. – sage88

6

Мне не нравится принятый ответ или @ 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); 
11

Элегантный способ заполнить поле со списком с списка массива:

List<String> ls = new ArrayList<String>(); 
jComboBox.setModel(new DefaultComboBoxModel(ls.toArray())); 
+1

Я не пробовал это, но похоже, что вы закончите заполнение jComboBox массивом Object, а не массивом String, используя этот подход. – sage88

2

Я считаю, вы можете создать новый вектор с помощью ArrayList и передать в JComboBox Конструктор.

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

Мой пример - это только строки.

1
DefaultComboBoxModel DLM = new DefaultComboBoxModel(); 
    for (int i = 0; i < <ArrayList>.size(); i++) { 
     DLM.addElement(<ArrayList>.get(i).getField()); 
    } 

    <ComboBoxName>.setModel(DLM); 

Понятный код.Edit <> по мере необходимости.