首先重置问题,不会让单选按钮与复选框失去选中状态.
第二,头一次输入显示完毕后接着输入,把复选框的勾去掉后,输出时还是显示被选中状态.
纠结了,表达不清楚,请大家见量.谢谢大家了
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class StudentsInfo extends JFrame implements ActionListener
{
/**
 * 
 */
private static final long serialVersionUID = 1L;
private JLabel lbname, lbaddr, lbTel, lbclass;
private JTextField jfname;
private JTextArea taCollect;
private JPanel inputpanel, collectpanel, checkpanel, radiopanel;
private GridBagLayout inputlayout;
private GridBagConstraints constraints;
private Container container;
private JCheckBox ckbswim, ckbbasketball;
private JRadioButton radioman, radiowoman;
private ButtonGroup btg;
private JComboBox<String> jcbclass;
private JButton b1, b2;
String sname, ssex, slove1, slove2, sclass; public StudentsInfo()
{
super("学生信息");
setSize(320, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
container = this.getContentPane();
container.setLayout(new GridLayout(2, 1));
} // 以设定的网格包布局向面板中添加组件
private void AddComponent(JPanel panel, GridBagLayout Layout,
GridBagConstraints gbc, Component com, int row, int column,
int numRows, int numColumns, int Weightx, int Weighty)
{
gbc.gridx = row;
gbc.gridy = column;
gbc.weightx = Weightx;
gbc.weighty = Weighty;
gbc.gridheight = numColumns;
gbc.gridwidth = numRows;
Layout.setConstraints(com, gbc);
panel.add(com); } public void setLayout()
{
inputpanel = new JPanel();
inputlayout = new GridBagLayout();
constraints = new GridBagConstraints();
inputpanel.setLayout(inputlayout); // 创建姓名标签并添加到输入面板
constraints.anchor = GridBagConstraints.CENTER;
lbname = new JLabel("姓名");
constraints.fill = GridBagConstraints.CENTER;
AddComponent(inputpanel, inputlayout, constraints, lbname, 0, 0, 1, 1,
20, 0);
// 创建姓名文本框并添加到输入面板
jfname = new JTextField();
constraints.fill = GridBagConstraints.BOTH;
AddComponent(inputpanel, inputlayout, constraints, jfname, 1, 0, 1, 1,
80, 100);
// 创建性别标签
lbaddr = new JLabel("性别");
constraints.fill = GridBagConstraints.NONE;
AddComponent(inputpanel, inputlayout, constraints, lbaddr, 0, 1, 1, 1,
20, 0);
// 创建性别单选按钮框中添加组件
radiopanel = new JPanel();
radiopanel.setLayout(new GridLayout(1, 2));
radioman = new JRadioButton("男");
radiowoman = new JRadioButton("女");
btg = new ButtonGroup();
btg.add(radioman);
btg.add(radiowoman);
radiopanel.add(radioman);
radiopanel.add(radiowoman);
constraints.fill = GridBagConstraints.BOTH;
AddComponent(inputpanel, inputlayout, constraints, radiopanel, 1, 1, 1,
1, 80, 100);
// 创建班级标签
lbclass = new JLabel("班级");
constraints.fill = GridBagConstraints.NONE;
AddComponent(inputpanel, inputlayout, constraints, lbclass, 0, 2, 1, 1,
20, 0);
// 创建班级下拉列表
jcbclass = new JComboBox<String>();
jcbclass.addItem("1班");
jcbclass.addItem("2班");
jcbclass.addItem("3班");
constraints.fill = GridBagConstraints.BOTH;
AddComponent(inputpanel, inputlayout, constraints, jcbclass, 1, 2, 1,
1, 80, 100);
// 创建爱好标签
lbTel = new JLabel("爱好");
constraints.fill = GridBagConstraints.NONE;
AddComponent(inputpanel, inputlayout, constraints, lbTel, 0, 3, 1, 1,
20, 0);
// 向爱好复选框面板中添加组件
checkpanel = new JPanel();
checkpanel.setLayout(new GridLayout(1, 2));
ckbswim = new JCheckBox("游泳");
ckbbasketball = new JCheckBox("篮球");
ckbswim.addActionListener(this);
ckbbasketball.addActionListener(this);
checkpanel.add(ckbswim);
checkpanel.add(ckbbasketball);
constraints.fill = GridBagConstraints.BOTH;
AddComponent(inputpanel, inputlayout, constraints, checkpanel, 1, 3, 1,
1, 80, 100);
// 添加按钮
constraints.anchor = GridBagConstraints.CENTER;
b1 = new JButton("确定");
constraints.fill = GridBagConstraints.NONE;
AddComponent(inputpanel, inputlayout, constraints, b1, 0, 4, 1, 1, 20,
0);
b2 = new JButton("重置");
constraints.fill = GridBagConstraints.CENTER;
AddComponent(inputpanel, inputlayout, constraints, b2, 1, 4, 1, 1, 80,
100);
b1.addActionListener(this);
b2.addActionListener(this);
// 添加汇总信息面板
collectpanel = new JPanel();
collectpanel.setLayout(new BorderLayout());
taCollect = new JTextArea("汇总列表" + "\n");
// 直接对汇总信息编辑
taCollect.setEditable(false);
collectpanel.add(taCollect);
// 将输入面板和汇总信息面板添加到框架中
container.add(inputpanel);
container.add(collectpanel); } public static void main(String[] args)
{
StudentsInfo si = new StudentsInfo();
si.setLayout();
si.setVisible(true); } public void actionPerformed(ActionEvent e)
{
if (e.getSource() == b1)
{
sname = jfname.getText();
if (radioman.isSelected())
{
ssex = new String("男");
}
if (radiowoman.isSelected())
{
ssex = new String("女");
} sclass = (String) jcbclass.getSelectedItem(); if (ckbswim.isSelected())
{
slove1 = (String)ckbswim.getText();
}
if (ckbbasketball.isSelected())
{
slove2 = (String)ckbbasketball.getText();
}
taCollect.append("姓名: " + sname + "\n");
taCollect.append("性别: " + ssex + "\n");
taCollect.append("班级: " + sclass + "\n");
taCollect.append("爱好: ");
if (null != slove1)
{
taCollect.append(slove1 + " ");
}
if (null != slove2)
{
taCollect.append(slove2);
}
if ((null == slove1) && (null == slove2))
{
taCollect.append("无");
}
}
if(e.getSource()==b2)
{
jfname.setText(null);
radioman.setSelected(false);
radiowoman.setSelected(false);
taCollect.setText("汇总列表" + "\n");
}
}}