2012-04-10 14 views
5

コンポーネントのリストを反復処理し、それらをSwing GroupLayoutのParallelGroupに追加する方法はありますか?Swing GroupLayout ParallelGroupにコンポーネントを反復的に追加するには?

ParallelGroupを取得する方法がないので難しいようです。

コンポーネントのリスト(この場合はJCheckBoxes)を生成するコードは次のとおりです。

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)); 
    } 

一覧が働いているが、私はGroupLayoutのするParallelGroupに各JCheckBoxのを挿入するためのリストを反復処理することができますか?たとえば、以下のコードはコンパイルされません。

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); 

また、誰もが、私は繰り返しループ用のスタンドアロンでそのグループにコンポーネントを追加することができるようにするParallelGroupのホールドを取得する方法を知っていますか?

+3

+1を。 – Adam

+0

ありがとうございます。私はGroupLayoutも好きです、それはとても効果的です! – Arvanem

+1

(あまり柔軟性のない)例があります。[ここ](http://stackoverflow.com/a/8504753/230513) – trashgod

答えて

6

私はあなたがやろうとしていることとあなたの混乱を見ることができます。 new演算子でのみ匿名クラス構文を使用できます。すなわち

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

ただし、ParallelGroupインスタンスは、ファクトリメソッドcreateParallelGroup(...)を使用してのみ作成できます。

あなたはパラレルグループへの一時的な参照を使用する必要があります:GroupLayout、最高のほとんど利用されていないレイアウトマネージャの私見を使用するための

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

ご理解いただきありがとうございます。効果的な解答と推論のために+1。 – Arvanem

関連する問題