gpt4 book ai didi

java - 一个 JRadioButton 可以在多个 ButtonGroup 中吗?

转载 作者:行者123 更新时间:2023-11-30 07:11:51 25 4
gpt4 key购买 nike

我正在尝试设置一个 JRadioButton-Matrix,以便在每一列和每一行中,一次只能选择一个 Button。我有以下代码:

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

那么右上方的矩阵是可能的,但左边不是。

最佳答案

不,任何使用默认 ButtonModelAbstractButton 子类(毫不奇怪地命名为 DefaultButtonModel)只能在一个 ButtonGroup.

有关详细信息,请参阅 ButtonGroup.add(...)ButtonModel.setGroup(...) .

可以创建一个特殊的 ButtonGroup 子类,它了解您的矩阵,并允许进行多项选择(我认为有一些技巧)。我曾经创建了一组单选按钮(互斥)和多个复选框(允许多选),它对我有用。 :-)现在无法访问代码,但如果您有兴趣,稍后可能会更新代码。

关于java - 一个 JRadioButton 可以在多个 ButtonGroup 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20772811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com