各列と各行で、一度に 1 つのボタンしか選択できないように、JRadioButton-Matrix を設定しようとしています。次のコードがあります。
JRadioButton[][] button = new JRadioButton[names.length][names.length];
ButtonGroup[] r = new ButtonGroup[names.length];
ButtonGroup[] c = new ButtonGroup[names.length];
for (int i = 0; i < names.length; i++) {
r[i] = new ButtonGroup();
c[i] = new ButtonGroup();
}
for (int i = 0; i < names.length; i++) {
for (int j = 0; j < names.length; j++) {
button[i][j] = new JRadioButton();
r[i].add(button[i][j]);
c[j].add(button[i][j]);
}
}
しかし、私がそれを実行すると、列だけが正しく動作します (つまり、c のグループのボタン)。ただし、パーツを c でコメントすると、行は適切に動作します。
物事を少し片付けるには (peeskillet に感謝):
JRadioButton のこの 4 x 4 マトリックスがあるとします。
O O O O
O O O O
O O O O
O O O O
そして、次のような選択ができるようにしたいと考えています。
X O O O X O O O O X O O
O X O O O O X O X O O O
O O X O O X O O O O O X
O O O X O O O X O O X O
上記では、各列には 1 つのみがあり、各行には 1 つのみがあります。次の例は不可能です。
X X O O X O O O
O O O O O X O O
O O X O O X O O
O O O X O O O X
ただし、問題は、上記の左のマトリックスのように選択できますが、右のマトリックスは選択できません。次の部分にコメントすると:
ButtonGroup[] c = new ButtonGroup[names.length];
c[i] = new ButtonGroup();
c[j].add(button[i][j]);
その場合、右上の行列は可能ですが、左側はできません。