Potrzebuję wypełnić JComboBox z ArrayList. Czy jest jakiś sposób to zrobić?Jak wypełnić pole JComboBox za pomocą tablicy ArrayList?
Odpowiedz
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);
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
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());
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
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);
elegancki sposób, aby wypełnić pola kombi z listy tablicy:
List<String> ls = new ArrayList<String>();
jComboBox.setModel(new DefaultComboBoxModel(ls.toArray()));
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
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.
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.
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
w samouczku nie ma przykładów z listą spisów – Lobato