2009-08-18 9 views

Odpowiedz

16

Użyj metody klasy ArrayList toArray() i przekazać go do konstruktora JComboBox

Zobacz JavaDoc i tutorial aby uzyskać więcej informacji.

+3

Jeśli robisz coś takiego jak ArrayList . w klasie Person możesz zdefiniować toString(), które dostosuje twoją wartość do ComboBox. Ponadto, możesz chcieć zadeklarować zmienną tablicy jako Object [] (zamiast String []) podczas korzystania z ArrayList.toArray(). – fivetwentysix

+1

w samouczku nie ma przykładów z listą spisów – Lobato

0

Na przyszłość:

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


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

To w ogóle nie odpowiada na pytanie. Chce wiedzieć, jak to zrobić za pomocą tablicy ArrayList, a nie za pomocą podstawowej tablicy typów. – sage88

-4

myślę, że jest to rozwiązanie

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

To jest bardzo mylące. Ten problem można rozwiązać za pomocą 2 linii kodu bez potrzeby korzystania z całego tego bałaganu. – sage88

6

Nie lubię przyjętej odpowiedź lub @ fivetwentysix w komentarzu odnośnie jak rozwiązać ten problem. Robi się to za pomocą jednej metody, ale nie daje pełnego rozwiązania do używania funkcji toArray. Musisz użyć opcji ToArray i podać jej argument, który jest tablicą odpowiedniego typu i rozmiaru, aby nie kończyła się tablicą Object. Podczas gdy tablica obiektów będzie działać, nie sądzę, że jest to najlepsza praktyka w mocno napisanym języku.

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

Alternatywnie można również zachować silne pisanie, używając tylko pętli 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

elegancki sposób, aby wypełnić pola kombi z listy tablicy:

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

Nie próbowałem tego, ale wygląda na to, że w efekcie wypełnisz jComboBox tablicą Object, a nie tablicą String, używając tej metody. – sage88

2

Wierzę, że można utworzyć nowy wektor używania ArrayList i przekazać, że do JComboBox Konstruktor.

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

mój przykład to tylko ciągi.

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

    <ComboBoxName>.setModel(DLM); 

Zrozumiały kod. Edycja <> zgodnie z wymaganiami.