如何使用 for 循环填充 ButtonGroup[] 数组
How to populate a ButtonGroup[] array using a for loop
所以我有两个 JRadioButton[]
数组,我想将它们放入一个 ButtonGroup[]
数组中。当我一次从数组中添加一个 JRadioButton
到一个 ButtonGroup
时,我没有遇到任何问题。当我使用 for 循环添加到 ButtonGroup[]
的数组时,没有语法错误,但我确实遇到编译器错误:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "javax.swing.ButtonGroup.add(javax.swing.AbstractButton)" because "allButtons[x]" is null
我不介意一次创建一个 buttonGroups
,但我只是想知道为什么第一个有效而另一个无效。
有效代码:
//creates radio buttons
JRadioButton[] profButtons = new JRadioButton[profs.length];
JRadioButton[] expButtons = new JRadioButton[profs.length];
for(int i=0; i<profs.length; i++)
{
profButtons[i] = new JRadioButton(profs[i]);
expButtons[i] = new JRadioButton(profs[i]);
}
//makes the radio button groups.
ButtonGroup acrGroup = new ButtonGroup();
acrGroup.add(profButtons[0]);
acrGroup.add(expButtons[0]);
无效的代码:
//creates radio buttons
JRadioButton[] profButtons = new JRadioButton[profs.length];
JRadioButton[] expButtons = new JRadioButton[profs.length];
for(int i=0; i<profs.length; i++)
{
profButtons[i] = new JRadioButton(profs[i]);
expButtons[i] = new JRadioButton(profs[i]);
}
//makes the radio button groups.
ButtonGroup[] allButtons = new ButtonGroup[profs.length];
for(int x=0; x<profs.length; x++)
{
allButtons[x].add(profButtons[x]);
allButtons[x].add(expButtons[x]);
}
profs
是我用来标记单选按钮的 String[]
数组。
在这部分代码中,您正在创建 ButtonGroups
的数组,但您从未初始化每个元素,因此每个元素都是 null
//makes the radio button groups.
ButtonGroup[] allButtons = new ButtonGroup[profs.length];
for(int x=0; x<profs.length; x++)
{
allButtons[x].add(profButtons[x]);
allButtons[x].add(expButtons[x]);
}
因此,在您的 for-loop
中,将此行添加为第一行
allButtons[x] = new ButtonGroup();
然后,您的其余代码
所以我有两个 JRadioButton[]
数组,我想将它们放入一个 ButtonGroup[]
数组中。当我一次从数组中添加一个 JRadioButton
到一个 ButtonGroup
时,我没有遇到任何问题。当我使用 for 循环添加到 ButtonGroup[]
的数组时,没有语法错误,但我确实遇到编译器错误:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "javax.swing.ButtonGroup.add(javax.swing.AbstractButton)" because "allButtons[x]" is null
我不介意一次创建一个 buttonGroups
,但我只是想知道为什么第一个有效而另一个无效。
有效代码:
//creates radio buttons
JRadioButton[] profButtons = new JRadioButton[profs.length];
JRadioButton[] expButtons = new JRadioButton[profs.length];
for(int i=0; i<profs.length; i++)
{
profButtons[i] = new JRadioButton(profs[i]);
expButtons[i] = new JRadioButton(profs[i]);
}
//makes the radio button groups.
ButtonGroup acrGroup = new ButtonGroup();
acrGroup.add(profButtons[0]);
acrGroup.add(expButtons[0]);
无效的代码:
//creates radio buttons
JRadioButton[] profButtons = new JRadioButton[profs.length];
JRadioButton[] expButtons = new JRadioButton[profs.length];
for(int i=0; i<profs.length; i++)
{
profButtons[i] = new JRadioButton(profs[i]);
expButtons[i] = new JRadioButton(profs[i]);
}
//makes the radio button groups.
ButtonGroup[] allButtons = new ButtonGroup[profs.length];
for(int x=0; x<profs.length; x++)
{
allButtons[x].add(profButtons[x]);
allButtons[x].add(expButtons[x]);
}
profs
是我用来标记单选按钮的 String[]
数组。
在这部分代码中,您正在创建 ButtonGroups
的数组,但您从未初始化每个元素,因此每个元素都是 null
//makes the radio button groups.
ButtonGroup[] allButtons = new ButtonGroup[profs.length];
for(int x=0; x<profs.length; x++)
{
allButtons[x].add(profButtons[x]);
allButtons[x].add(expButtons[x]);
}
因此,在您的 for-loop
中,将此行添加为第一行
allButtons[x] = new ButtonGroup();
然后,您的其余代码