【发布时间】:2013-12-25 12:31:23
【问题描述】:
我正在尝试设置一个 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):
假设我有这个 4 x 4 的 JRadioButtons 矩阵:
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 是的,这很愚蠢。
-
“这样在每一列和每一行中,一次只能选择一个按钮”。在我看来,按照这种逻辑,只有 一个 按钮可以选择。对吗?
-
@peeskillet 好点。如果是这样,将它们全部添加到单个
ButtonGroup应该是一个解决方案..
标签: java swing matrix jradiobutton buttongroup