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

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很少被用。

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能