Java中如何获取单选按钮和复选框选中的值?

有没有简单易行的方法?如果按钮太多该怎么获取?新手求解,谢谢大家了。
package homework;

import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.border.Border;

public class Test {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    MyFrame f1 = new MyFrame();
}

}

class MyFrame extends JFrame implements ActionListener {
// 创建单选按钮
JRadioButton r1 = new JRadioButton("男", false);
JRadioButton r2 = new JRadioButton("女", true);

ButtonGroup bg = new ButtonGroup();// 创建按钮组

// 创建复选框
JCheckBox c1 = new JCheckBox("运动");
JCheckBox c2 = new JCheckBox("看书");
JCheckBox c3 = new JCheckBox("旅游");

String[] selectedText1 = new String[100];
JComboBox jcmb = null;// 声明组合框
// 创建列表框
String[] selcectedText2 = { "北京", "上海", "广州", "深圳", "成都", "南京", "沈阳" };
JList jlist = new JList(selcectedText2);
JButton b = new JButton("显示信息");
Border e = BorderFactory.createEtchedBorder();
Border bo1 = BorderFactory.createTitledBorder(e, "性别");
Border bo2 = BorderFactory.createTitledBorder("兴趣爱好");
Border bo3 = BorderFactory.createTitledBorder(e, "出生年份");
Border bo4 = BorderFactory.createTitledBorder("籍贯");
// 创建面板
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();
JPanel p5 = new JPanel();

public MyFrame() {
    this.setSize(300, 650);
    this.setTitle("学生信息");
    Container c = this.getContentPane();
    GridLayout f = new GridLayout(5, 1, 2, 2);
    c.setLayout(f);
    bg.add(r1);
    bg.add(r2);
    p1.setBorder(bo1);
    p1.add(r1);
    p1.add(r2);
    p2.setBorder(bo2);
    p2.add(c1);
    p2.add(c2);
    p2.add(c3);
    p3.setBorder(bo3);
    for (int i = 0; i < selectedText1.length; i++) {
        int year = 1950 + i;
        selectedText1[i] = String.valueOf(year);
    }
    jcmb = new JComboBox(selectedText1);// 创建组合框
    p3.add(jcmb);
    p4.setBorder(bo4);
    jlist.setVisibleRowCount(4);
    JScrollPane js = new JScrollPane(jlist);// 给列表框添加进度条
    p4.add(js);
    p5.add(b);
    b.addActionListener(this);
    p5.setSize(100, 50);
    c.add(p1);
    c.add(p2);
    c.add(p3);
    c.add(p4);
    c.add(p5);
    this.setVisible(true);
    this.setDefaultCloseOperation(3);
}

@SuppressWarnings("null")
public void actionPerformed(ActionEvent e) {

    if (e.getSource() == b) {
        String sex = new String();
        if (r1.isSelected()) {
            sex = r1.getText().toString();
        } else {
            sex = r2.getText().toString();
        }
        JCheckBox[] hobby = new JCheckBox[3];
        hobby[0] = c1;
        hobby[1] = c2;
        hobby[2] = c3;
        String ahobby[]=null;
        int i;
        for (i = 0; i <= hobby.length; i++) {
            if (hobby[i].isSelected()) {
                ahobby[i] = hobby[i].getText().toString();
            }
        }
        JOptionPane.showMessageDialog(this, "性别为:" + sex + "\n" + "兴趣爱好为:" + ahobby[i] + "\n" + "出生年份为:"
                + jcmb.getSelectedItem() + "\n" + "籍贯为:" + jlist.getSelectedValue(), "消息",
                JOptionPane.INFORMATION_MESSAGE);
    }

}
大家看看我的代码输出兴趣爱好那里出了什么问题?

3个回答

获取单选框的值有三种方式:

 1、$('input:radio:checked').val();
2、$("input[type='radio']:checked").val();
3、$("input[name='rd']:checked").val();
lpirate4
lpirate4 我指的不是网页设计中的问题。
4 年多之前 回复

把这些控件的名字定义为前缀+一个数字,或者干脆放在数组中,这样就可以循环了。

lpirate4
lpirate4 麻烦你看看我的对象数组那里出了什么问题?
4 年多之前 回复

自己的电脑上做过,公司上没有。回去给你找找,swing很少被用。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问