2012-04-10 28 views
5

Có cách nào để lặp qua Danh sách các thành phần và thêm chúng vào một nhóm song song trong Swing GroupLayout không?Làm thế nào để lặp lại thêm các thành phần vào một nhóm ParallelGroup Swing GroupLayout?

Có vẻ như khó khăn vì không có phương pháp nào để giữ ParallelGroup.

Đây là mã tạo Danh sách thành phần (trong trường hợp này là JCheckBox).

List<JCheckBox> listCustomiseJCB = new ArrayList<>(); 
    for (int w = 0; w < initialCMTableColumns.size(); w++) { 
     String heading = (String)initialCMTableColumns.get(w).getHeaderValue(); 
     listCustomiseJCB.add(new JCheckBox(heading)); 
    } 

Danh sách đang hoạt động, nhưng làm cách nào tôi có thể lặp lại Danh sách để chèn mỗi JCheckbox vào Nhóm ParallelGroup của GroupLayout? Ví dụ: mã bên dưới sẽ không biên dịch.

GroupLayout gl = new GroupLayout(jpnlCustomise); 
    jpnlCustomise.setLayout(gl); 
    gl.setAutoCreateContainerGaps(true); 
    gl.setAutoCreateGaps(true); 

    GroupLayout.SequentialGroup hGroup = gl.createSequentialGroup(); 

    hGroup 
      .addComponent(jbtnApply); 
    hGroup.addGroup(gl.createParallelGroup(GroupLayout.Alignment.CENTER) 
      // ERRORS BEGIN HERE 
      { for (JCheckBox c: listCustomiseJCB) { 
      .addComponent(c); 
      }}); 
      // ERRORS END HERE 
    hGroup 
      .addComponent(jbtnCancel); 

    gl.setHorizontalGroup(hGroup); 

Ngoài ra, có ai biết cách để giữ ParallelGroup để tôi có thể thêm thành phần vào nhóm đó trong vòng lặp độc lập không?

+3

+1 cho việc sử dụng GroupLayout, các IMHO quản lý bố trí tốt nhất nhưng ít, hầu hết. – Adam

+0

Cảm ơn bạn. Tôi thích GroupLayout quá, nó rất hiệu quả! – Arvanem

+1

Có một ví dụ (ít linh hoạt) [ở đây] (http://stackoverflow.com/a/8504753/230513). – trashgod

Trả lời

6

Tôi có thể thấy những gì bạn đang cố gắng làm và sự nhầm lẫn của bạn. Bạn chỉ có thể sử dụng cú pháp lớp ẩn danh với toán tử mới. tức là

new LinkedList<String>() { 
    { 
    add("bar"); 
    } 
}; 

Tuy nhiên, các cá thể ParallelGroup chỉ có thể được tạo bằng phương thức factory createParallelGroup (...).

Bạn sẽ phải sử dụng một tài liệu tham khảo tạm thời cho nhóm song song:

ParallelGroup pGroup = gl 
     .createParallelGroup(GroupLayout.Alignment.CENTER); 
hGroup.addGroup(pGroup); 
for (JCheckBox c : listCustomiseJCB) { 
    pGroup.addComponent(c); 
} 
+1

Cảm ơn sự thông cảm của bạn. 1 cho giải pháp hiệu quả và lý luận của bạn. – Arvanem

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