皆さん、こんにちは。
Eclipse WindowBuilder で FormLayout を使用して JPanel を作成できるようにしたので、この作成を動的にしたいと考えました。これは、作成中のプログラムで 1000 行の長さを避けるためにそのようにする必要があるためです。次のコードを使用しました。
JPanel pData = new JPanel();
pData.setBounds(10, 232, 381, 163);
FormLayout fLayout= new FormLayout(new ColumnSpec[]{}, new RowSpec[]{});
int numCols = 5;
int numRows = 10;
for(int i=1;i<=numCols;i+=2)
{
fLayout.insertColumn(i, FormFactory.RELATED_GAP_COLSPEC);
fLayout.insertColumn(i+1, FormFactory.DEFAULT_COLSPEC);
}
for(int j=1;j<=numRows;j+=2)
{
fLayout.insertRow(j, FormFactory.RELATED_GAP_ROWSPEC);
fLayout.insertRow(j+1, FormFactory.DEFAULT_ROWSPEC);
}
pData.setLayout(fLayout);
getContentPane().add(pData);
しかし、プログラムを開始すると、次のエラーのスタックが表示されます。
「列インデックス 1 は [1, 0] の範囲内にある必要があります」
for ループのインデックスを変更すると、このエラー テキストの途中の数字が変更されるだけですが、残りは同じままです。
私は何を間違っていますか?FormLayout を動的に作成することさえ可能ですか? よろしくお願いします。
追加情報: FormLayout を使用している理由は、列のサイズが異なるためです。GridBagLayout も同様に実行できることはわかっていますが、インセットと位置に関して同じ結果を得るには、さらに多くの行と数が必要です。しかし、それが唯一の賢明な選択肢である場合、私はそれを受け入れます...それが動的である限り;-)