lpirate4 2015-11-25 04:14 采纳率: 50%
浏览 13592

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条回答

  • ITDragon龙 2015-11-25 06:14
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!