有没有简单易行的方法?如果按钮太多该怎么获取?新手求解,谢谢大家了。
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);
}
}
大家看看我的代码输出兴趣爱好那里出了什么问题?
自己的电脑上做过,公司上没有。回去给你找找,swing很少被用。
把这些控件的名字定义为前缀+一个数字,或者干脆放在数组中,这样就可以循环了。
获取单选框的值有三种方式:
1、$('input:radio:checked').val();
2、$("input[type='radio']:checked").val();
3、$("input[name='rd']:checked").val();