2009-08-18 50 views

Trả lời

16

Sử dụng phương pháp toArray() của lớp ArrayList và vượt qua nó vào constructor của JComboBox

Xem JavaDoctutorial để biết thêm.

+3

Nếu bạn đang làm một cái gì đó như ArrayList . trong lớp Person của bạn, bạn có thể định nghĩa toString() sẽ điều chỉnh giá trị của bạn cho ComboBox. Ngoài ra, bạn có thể phải khai báo biến mảng của bạn là Object [] (thay vì String []) khi sử dụng ArrayList.toArray(). – fivetwentysix

+1

trong hướng dẫn không có ví dụ nào với danh sách mảng – Lobato

0

Để tham khảo trong tương lai:

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


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

Điều này không trả lời được câu hỏi nào cả. Anh ta muốn biết làm thế nào để làm điều đó với một ArrayList, không phải với một mảng kiểu nguyên thủy. – sage88

-4

tôi nghĩ rằng đó là giải pháp

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

Điều này vô cùng khó hiểu. Vấn đề này có thể được giải quyết với 2 dòng mã mà không cần cho tất cả các mớ hỗn độn này. – sage88

6

tôi không thích câu trả lời chấp nhận hoặc @ bình luận fivetwentysix của về làm thế nào để giải quyết việc này. Nó nhận được một phương pháp để làm điều này, nhưng không đưa ra giải pháp đầy đủ để sử dụng toArray. Bạn cần sử dụng toArray và cho nó một đối số là một mảng của kiểu và kích cỡ chính xác để bạn không kết thúc với một mảng Object. Trong khi một mảng đối tượng sẽ hoạt động, tôi không nghĩ rằng nó là thực hành tốt nhất trong một ngôn ngữ gõ mạnh mẽ.

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

Ngoài ra, bạn cũng có thể duy trì việc nhập mạnh bằng cách chỉ sử dụng vòng lặp 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

cách thanh lịch để điền combo box với một array list:

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

Tôi đã không thử điều này, nhưng nó có vẻ như bạn muốn kết thúc điền jComboBox với một mảng đối tượng chứ không phải là một mảng String bằng cách sử dụng phương pháp này. – sage88

2

Tôi tin rằng bạn có thể tạo một Vector mới sử dụng ArrayList của bạn và thông qua đó để các JComboBox Constructor.

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

ví dụ của tôi chỉ là chuỗi.

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

    <ComboBoxName>.setModel(DLM); 

Mã dễ hiểu.Chỉnh sửa <> theo yêu cầu.

Các vấn đề liên quan