Я пытаюсь настроить JRadioButton-Matrix, так что в каждом столбце и в каждой строке можно выбрать только одну кнопку. У меня есть следующий код:Может ли JRadioButton быть в нескольких ButtonGroups?
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, строки ведут себя правильно.
Чтобы очистить вещи немного вверх (благодаря peeskillet):
Допустим, у меня есть этот 4 х 4 матрица JRadioButton,:
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
В приведенном выше описании каждый столбец содержит только одну и каждую строку. Следующие примеры не были бы возможны:
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]);
, то матрица справа должна быть, но не слева.
* «К сожалению, если имена запутанные ..» * Изменение их быть «не сбивают с толком» является более продуктивным, чем извинения .. –
Класс ButtonGroup предназначен для группировки переключателей. Вам нужно будет написать свои собственные прослушиватели действий, чтобы проверять переключатели между группами кнопок (строками). –
@AndrewThompson Да, это было глупо. – Zuerill