【发布时间】:2020-07-23 09:38:26
【问题描述】:
我正在创建一个基本的 GUI 框架。该框架有 10 个单选按钮和一个 提交 按钮。用户选择一个选项(JRadioButtons)并单击提交(JButton)按钮。单击提交按钮后,用户选择的选项会出现在不同的框架上。
我希望提交按钮能够识别用户选择的 JRadioButton。 我把我的代码放在这里供参考。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Frame2 extends JFrame{
private JFrame frame2;
private JLabel label2;
private JButton button2;
private JRadioButton r1;
private JRadioButton r2;
private JRadioButton r3;
private JRadioButton r4;
private JRadioButton r5;
private JRadioButton r6;
private JRadioButton r7;
private JRadioButton r8;
private JRadioButton r9;
private JRadioButton r10;
public ButtonGroup group;
Frame2(){
setLayout(new BorderLayout());
setSize(new Dimension(1304,690));
getContentPane().setBackground(Color.DARK_GRAY);
label2= new JLabel(" Choose a topic: ");
label2.setFont(new Font("Seriff",Font.BOLD, 14));
label2.setForeground(Color.WHITE);
button2=new JButton("Submit");
add(label2, BorderLayout.NORTH);
JPanel centerPanel = new JPanel(new GridLayout(2, 5));
centerPanel.add(r1=new JRadioButton("Introduction"));
centerPanel.add(r2=new JRadioButton("Class and Objects"));
centerPanel.add(r3=new JRadioButton("Object Oriented Programming Concepts"));
centerPanel.add(r4=new JRadioButton("JAVA literals, constants, variables"));
centerPanel.add(r5=new JRadioButton("Loops"));
centerPanel.add(r6=new JRadioButton("Functions/Methods"));
centerPanel.add(r7=new JRadioButton("Strings"));
centerPanel.add(r8=new JRadioButton("Arrays"));
centerPanel.add(r9=new JRadioButton("Time Complexity"));
centerPanel.add(r10=new JRadioButton("Data Structures"));
add(centerPanel, BorderLayout.CENTER);
group= new ButtonGroup();
group.add(r1);
group.add(r2);
group.add(r3);
group.add(r4);
group.add(r5);
group.add(r6);
group.add(r7);
group.add(r8);
group.add(r9);
group.add(r10);
add(button2, BorderLayout.SOUTH);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource()==button2) {
Layouts l=new Layouts();
l.main(null);
dispose();
}
}
});
}
public static void main(String[] args) {
Frame2 fr2=new Frame2();
}
}`
提前致谢。
【问题讨论】:
-
这对你解决问题有帮助吗docs.oracle.com/javase/7/docs/api/javax/swing/…?
-
这很奇怪。它说,ButtonGroup 类型中的方法 setSelected(ButtonModel, boolean) 不适用于参数 (JRadioButton, boolean)
-
该方法处理的是
ButtonModel,而不是按钮本身。代码需要改用aRadioButton.getModel()之类的东西。顺便说一句,我怀疑错误的性质,并通过仔细检查 @weisj 链接的相同 Java 文档来确认它们。当代码出现问题时,首先要检查的是 API 附带的文档。 -
另外.. 为了尽快获得更好的帮助,edit 添加minimal reproducible example 或Short, Self Contained, Correct Example。在这种特定情况下,请注意,如果您可以使用 2 个单选按钮来完成这项工作,那么很容易将其转换为使用 10 或 1000 个按钮。此处显示的示例代码中无需包含 10。将其修剪为仍然显示手头问题的 minimal / shortest 形式。
标签: java swing jbutton jradiobutton