添加多个按钮组的更有效方法
More efficient way to add multiple button groups
我正在尝试使用 swing 库在 java 中进行个性测验。有 5 个问题,每个问题有 3 个可能的答案。现在我正在构建界面,但我正在努力将多组按钮添加到我的 createComponents 方法中。
所以为了清晰和更容易阅读,我为我的第一个问题文本做了一个单独的方法。那已经添加没问题了。但是我 运行 遇到了按钮组的问题。我不想用多行和多行重复添加 Buttongroups 东西来加载我的 createComponents 方法,因为我读到不包括评论,方法最多应该有 15 行。或者至少对于初学者来说。
所以我为我的按钮组创建了一个单独的方法,然后我尝试将其添加到 createComponents 方法中。这给了我一个错误,说没有合适的方法将按钮组添加到我的容器。
现在我正在我的 createComponent 方法中编写多行代码,以便我可以 'correctly' 添加我的单选按钮。我只回答第一个问题,我的方法中已经有 16 行。有更好、更有效的方法吗?
private void createComponents(Container container){
BoxLayout layout = new BoxLayout(container, BoxLayout.Y_AXIS);
container.setLayout(layout);
JLabel text = new JLabel("this is the intro text");
container.add((text), BorderLayout.NORTH);
container.add(QuizIntro());
container.add(QuestionOne());
container.add(QuestionOneGroup());
// this throws an error
JRadioButton int1 = new JRadioButton("This is answer choice 1");
JRadioButton ent1 = new JRadioButton("This is answer choice 2");
JRadioButton jb1 = new JRadioButton("This is answer choice 3");
ButtonGroup group = new ButtonGroup();
group.add(int1);
group.add(ent1);
group.add(jb1);
container.add(int1);
container.add(ent1);
container.add(jb1);
// this is the 'correct' way I've been doing it.
}
public ButtonGroup QuestionOneGroup(){
JRadioButton int1 = new JRadioButton("This is answer choice 1");
JRadioButton ent1 = new JRadioButton("This is answer choice 2");
JRadioButton jb1 = new JRadioButton("This is answer choice 3");
ButtonGroup group = new ButtonGroup();
group.add(int1);
group.add(ent1);
group.add(jb1);
return group;
// this is the method I made to add a buttongroup and make my createComponent easier to read.
}
所以我的预期输出只是一个准系统 window,包含问题和 3 个可能的答案选择,但我收到一条错误消息,告诉我没有合适的方法。它说 "argument mismatch buttongroup cannot be converted to popup menu or component"。
您只能将 Components
添加到 Container
。
A ButtonGroup
不是 Component
。
A ButtonGroup
用于指示已选择一组组件中的哪个组件。您仍然需要将每个单独的单选按钮添加到面板。
你的代码应该是这样的:
//public ButtonGroup QuestionOneGroup()
public JPanel questionOneGroup()
{
JRadioButton int1 = new JRadioButton("This is answer choice 1");
JRadioButton ent1 = new JRadioButton("This is answer choice 2");
JRadioButton jb1 = new JRadioButton("This is answer choice 3");
ButtonGroup group = new ButtonGroup();
group.add(int1);
group.add(ent1);
group.add(jb1);
//return group;
JPanel panel = new JPanel();
panel.add( int1 );
panel.add( ent1 );
panel.add( jb1 );
return panel;
}
阅读有关 How to Use Radio Buttons 的 Swing 教程部分,了解更多信息和工作示例。
我正在尝试使用 swing 库在 java 中进行个性测验。有 5 个问题,每个问题有 3 个可能的答案。现在我正在构建界面,但我正在努力将多组按钮添加到我的 createComponents 方法中。
所以为了清晰和更容易阅读,我为我的第一个问题文本做了一个单独的方法。那已经添加没问题了。但是我 运行 遇到了按钮组的问题。我不想用多行和多行重复添加 Buttongroups 东西来加载我的 createComponents 方法,因为我读到不包括评论,方法最多应该有 15 行。或者至少对于初学者来说。
所以我为我的按钮组创建了一个单独的方法,然后我尝试将其添加到 createComponents 方法中。这给了我一个错误,说没有合适的方法将按钮组添加到我的容器。
现在我正在我的 createComponent 方法中编写多行代码,以便我可以 'correctly' 添加我的单选按钮。我只回答第一个问题,我的方法中已经有 16 行。有更好、更有效的方法吗?
private void createComponents(Container container){
BoxLayout layout = new BoxLayout(container, BoxLayout.Y_AXIS);
container.setLayout(layout);
JLabel text = new JLabel("this is the intro text");
container.add((text), BorderLayout.NORTH);
container.add(QuizIntro());
container.add(QuestionOne());
container.add(QuestionOneGroup());
// this throws an error
JRadioButton int1 = new JRadioButton("This is answer choice 1");
JRadioButton ent1 = new JRadioButton("This is answer choice 2");
JRadioButton jb1 = new JRadioButton("This is answer choice 3");
ButtonGroup group = new ButtonGroup();
group.add(int1);
group.add(ent1);
group.add(jb1);
container.add(int1);
container.add(ent1);
container.add(jb1);
// this is the 'correct' way I've been doing it.
}
public ButtonGroup QuestionOneGroup(){
JRadioButton int1 = new JRadioButton("This is answer choice 1");
JRadioButton ent1 = new JRadioButton("This is answer choice 2");
JRadioButton jb1 = new JRadioButton("This is answer choice 3");
ButtonGroup group = new ButtonGroup();
group.add(int1);
group.add(ent1);
group.add(jb1);
return group;
// this is the method I made to add a buttongroup and make my createComponent easier to read.
}
所以我的预期输出只是一个准系统 window,包含问题和 3 个可能的答案选择,但我收到一条错误消息,告诉我没有合适的方法。它说 "argument mismatch buttongroup cannot be converted to popup menu or component"。
您只能将 Components
添加到 Container
。
A ButtonGroup
不是 Component
。
A ButtonGroup
用于指示已选择一组组件中的哪个组件。您仍然需要将每个单独的单选按钮添加到面板。
你的代码应该是这样的:
//public ButtonGroup QuestionOneGroup()
public JPanel questionOneGroup()
{
JRadioButton int1 = new JRadioButton("This is answer choice 1");
JRadioButton ent1 = new JRadioButton("This is answer choice 2");
JRadioButton jb1 = new JRadioButton("This is answer choice 3");
ButtonGroup group = new ButtonGroup();
group.add(int1);
group.add(ent1);
group.add(jb1);
//return group;
JPanel panel = new JPanel();
panel.add( int1 );
panel.add( ent1 );
panel.add( jb1 );
return panel;
}
阅读有关 How to Use Radio Buttons 的 Swing 教程部分,了解更多信息和工作示例。