选修课作业:
注意swing各组件的重置、链接等代码,尤其是单选多选组合框等的使用方法。
源代码如下:
package hobby;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class NewJFrame extends javax.swing.JFrame {
ArrayList<Info> info = new ArrayList<Info>(); //创建记录信息的Arraylist
public NewJFrame() {
this.setBounds(500, 250, 500, 450);
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
jLabel1 = new javax.swing.JLabel();
jSeparator1 = new javax.swing.JSeparator();
jLabel2 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
jRadioButton1 = new javax.swing.JRadioButton();
jRadioButton2 = new javax.swing.JRadioButton();
jLabel4 = new javax.swing.JLabel();
jTextField2 = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
jComboBox1 = new javax.swing.JComboBox<>();
jLabel6 = new javax.swing.JLabel();
jComboBox2 = new javax.swing.JComboBox<>();
jLabel7 = new javax.swing.JLabel();
jTextField3 = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
jCheckBox1 = new javax.swing.JCheckBox();
jCheckBox2 = new javax.swing.JCheckBox();
jCheckBox3 = new javax.swing.JCheckBox();
jLabel9 = new javax.swing.JLabel();
jTextField4 = new javax.swing.JTextField();
jLabel10 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setFont(new java.awt.Font("黑体", 1, 48)); // NOI18N
jLabel1.setText("个人爱好调查");
jLabel2.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jLabel2.setText("姓名:");
jLabel3.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jLabel3.setText("性别:");
buttonGroup1.add(jRadioButton1);
jRadioButton1.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jRadioButton1.setText("男");
buttonGroup1.add(jRadioButton2);
jRadioButton2.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jRadioButton2.setText("女");
jLabel4.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jLabel4.setText("籍贯:");
jLabel5.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jLabel5.setText("省份:");
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] {"选择省份", "山东", "江苏", "黑龙江"}));
jComboBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBox1ActionPerformed(evt);
}
});
jLabel6.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jLabel6.setText("城市:");
jComboBox2.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "选择城市" }));
jLabel7.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jLabel7.setText("地址:");
jLabel8.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jLabel8.setText("个人爱好:");
jCheckBox1.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jCheckBox1.setText("足球");
jCheckBox2.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jCheckBox2.setText("篮球");
jCheckBox3.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jCheckBox3.setText("乒乓球");
jLabel9.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jLabel9.setText("其它:");
jLabel10.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jLabel10.setText("备注:");
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
jButton1.setFont(new java.awt.Font("楷体", 1, 26)); // NOI18N
jButton1.setText("存盘");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(31, 31, 31)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 693, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGap(10, 10, 10)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel10)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel8)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jCheckBox1)
.addGap(18, 18, 18)
.addComponent(jCheckBox2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jCheckBox3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel9)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField4))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 584, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField3))
.addComponent(jScrollPane1))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel3)
.addGap(65, 65, 65)
.addComponent(jRadioButton1))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 152, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(1, 1, 1)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(24, 24, 24)
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jRadioButton2))))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 40, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGap(305, 305, 305)
.addComponent(jButton1)))
.addGap(31, 31, 31))
.addGroup(layout.createSequentialGroup()
.addGap(222, 222, 222)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 318, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(36, 36, 36)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(jRadioButton1)
.addComponent(jRadioButton2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6)
.addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel7)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel8)
.addComponent(jCheckBox1)
.addComponent(jCheckBox2)
.addComponent(jCheckBox3)
.addComponent(jLabel9)
.addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel10)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(21, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
jComboBox2.removeAllItems();
int index = jComboBox1.getSelectedIndex(); //根据省份的选择确定城市的选择
switch (index) {
case 1:
jComboBox2.addItem("济南");
jComboBox2.addItem("济宁");
jComboBox2.addItem("青岛");
break;
case 2:
jComboBox2.addItem("南京");
jComboBox2.addItem("无锡");
jComboBox2.addItem("徐州");
break;
case 3:
jComboBox2.addItem("哈尔滨");
jComboBox2.addItem("大庆");
jComboBox2.addItem("佳木斯");
break;
default:
jComboBox2.addItem("选择城市");
break;
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Info st=new Info("","","","","","","",""); //创建当前人的各项资料
st.name=jTextField1.getText();
if(jRadioButton1.isSelected())
st.sex= jRadioButton1.getText();
if(jRadioButton2.isSelected())
st.sex= jRadioButton2.getText();
st.plc=jTextField2.getText();
st.pr=(String)jComboBox1.getSelectedItem();
st.city=(String)jComboBox2.getSelectedItem();
st.ad= jTextField3.getText();
if(jCheckBox1.isSelected())
st.hob=st.hob+jCheckBox1.getText()+" ";
if(jCheckBox2.isSelected())
st.hob=st.hob+jCheckBox2.getText()+" ";
if(jCheckBox3.isSelected())
st.hob=st.hob+jCheckBox3.getText()+" ";
st.hob+= jTextField4.getText();
st.ps=jTextArea1.getText();
info.add(st); //将这个人的资料加入到所有人的资料中
saveFile(info,"info.txt"); //保存文件
jTextArea1.setText(""); //重置文本区域和选择按钮等的状态
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");
buttonGroup1.clearSelection();
jCheckBox1.setSelected(false);
jCheckBox2.setSelected(false);
jCheckBox3.setSelected(false);
jComboBox1.removeAllItems();
jComboBox1.addItem("选择省份");
jComboBox1.addItem("山东");
jComboBox1.addItem("江苏");
jComboBox1.addItem("黑龙江");
jComboBox2.removeAllItems();
jComboBox2.addItem("选择城市");
}
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
public void saveFile(ArrayList<Info> info, String filename) { //保存文件
try {
BufferedWriter writer
= new BufferedWriter(new FileWriter(filename, false));
for (Info st : info) {
writer.write(String.format("%s,%s,%s,%s,%s,%s,%s,%s\r\n",
st.name, st.sex, st.plc, st.pr, st.city, st.ad, st.hob, st.ps));
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// Variables declaration - do not modify
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JButton jButton1;
private javax.swing.JCheckBox jCheckBox1;
private javax.swing.JCheckBox jCheckBox2;
private javax.swing.JCheckBox jCheckBox3;
private javax.swing.JComboBox<String> jComboBox1;
private javax.swing.JComboBox<String> jComboBox2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JRadioButton jRadioButton1;
private javax.swing.JRadioButton jRadioButton2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
// End of variables declaration
}
class Info { //个人资料的类
String name;
String sex;
String plc;
String pr;
String city;
String ad;
String hob;
String ps;
public Info(String name, String sex, String plc, String pr,
String city, String ad, String hob, String ps) {
this.name = name;
this.sex = sex;
this.plc = plc;
this.pr = pr;
this.city = city;
this.ad = ad;
this.hob = hob;
this.ps = ps;
}
}