📄 studentinfo.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class StudentInfo implements MouseListener,WindowListener{
//为界面设计声明成员变量
private Frame frObj;
private Checkbox checkObj;
private CheckboxGroup groupObj;
private Checkbox checkObj1,checkObj2;
private TextField tfObj;
private List listObj;
private Choice choiceObj;
private TextArea taObj;
private Button butObj1,butObj2;
private Label labObj1,labObj2,labObj3,labObj4,labObj5;
private Panel panelObj1,panelObj2,panelObj3,panelObj4,panelObj5,panelObj6;
public static void main(String args[])
{ StudentInfo stuObj = new StudentInfo();
stuObj.create();
} //在这个例子中,使用了四种常用容器
public void create()
{ //实例化一个标题为Student information example的Frame对象
frObj = new Frame("Student information example");
//生成“是否注册”复选框
checkObj = new Checkbox("是否注册");
//生成“姓名”文本以及对应的文本框
labObj1 = new Label("姓名:");
tfObj = new TextField(20);
//生成“性别“文本以及对应的两个单选钮
labObj2 = new Label("性别:");
groupObj = new CheckboxGroup();
checkObj1 = new Checkbox("男",groupObj,true);
checkObj2 = new Checkbox("女",groupObj,false);
//生成”年级“文本以及对应的List对象
labObj3 = new Label("年级:");
listObj = new List(4,false);
listObj.add("一年级");
listObj.add("二年级");
listObj.add("三年级");
listObj.add("四年级");
//生成”系别“文本以及对应的Choice对象
labObj4 = new Label("系别:");
choiceObj = new Choice();
choiceObj.add("计算机");
choiceObj.add("数学");
choiceObj.add("物理");
choiceObj.add("外语");
//生成”显示一个学生所有信息“文本以及用于信息显示的文本区域
labObj5 = new Label("显示一个学生所有信息:");
taObj = new TextArea();
//生成”显示“和”保存“按钮
butObj1 = new Button("显示");
butObj2 = new Button("保存");
//实例化6个Panel对象,用于界面上各组件位置的控制
panelObj1 = new Panel();
panelObj2 = new Panel();
panelObj3 = new Panel();
panelObj4 = new Panel();
panelObj5 = new Panel();
panelObj6 = new Panel();
/*为panelObj1设置布局管理器,使学生姓名和是否注册复选框位于同一行上*/ panelObj1.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));
panelObj1.add(checkObj);
panelObj1.add(labObj1);
panelObj1.add(tfObj);
/*为panelObj2设置布局管理器,设置”性别“文本和两个单选钮成纵向分布*/
panelObj2.setLayout(new GridLayout(3,1));
panelObj2.add(labObj2);
panelObj2.add(checkObj1); panelObj2.add(checkObj2); /*panelObj3控制”年级“文本和List组件的位置关系*/ panelObj3.setLayout(new BorderLayout());
panelObj3.add("North",labObj3); panelObj3.add("Center",listObj);
/*panelObj4控制”系别“文本和Choice组件的位置关系*/
panelObj4.setLayout(new BorderLayout());
panelObj4.add("North",labObj4);
panelObj4.add("Center",choiceObj);
/*panelObj5控制”显示一个学生所有信息“文本和TextArea组件的位置关系*/
panelObj5.setLayout(new BorderLayout());
panelObj5.add("North",labObj5);
panelObj5.add("Center",taObj); /*panelObj6控制”显示“和”保存“按钮的位置关系*/
panelObj6.setLayout(new FlowLayout(FlowLayout.CENTER,80,20));
panelObj6.add(butObj1);
panelObj6.add(butObj2);
/*声明GridBagLayout和GridBagConstraints对象,用于控制整个界面的布局*/
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
//为Frame设置GridBagLayout布局管理器
frObj.setLayout(gridbag);
//下面四行语句使学生姓名和”是否注册“复选框占一行显示
c.gridwidth =GridBagConstraints.REMAINDER;
c.weightx = 1.0;
gridbag.setConstraints(panelObj1,c);
frObj.add(panelObj1);
/*下面的11行语句将性别、年级和系别三部分上端对齐显示*/
c.anchor = GridBagConstraints.NORTH;
c.gridwidth = 1;
c.gridheight = 4;
c.weightx = 1.0;
gridbag.setConstraints(panelObj2,c);
gridbag.setConstraints(panelObj3,c);
frObj.add(panelObj2);
frObj.add(panelObj3);
c.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(panelObj4,c); frObj.add(panelObj4);
/*下面5行语句使”显示一个学生所有信息“文本和对应的文本区域在性别、年级、系别三部分下面显示*/ c.gridwidth = GridBagConstraints.REMAINDER; c.gridheight = 4;
c.weightx = 1.0;
gridbag.setConstraints(panelObj5,c); frObj.add(panelObj5);
/*下面三行语句将”显示“按钮和”保存“按钮另起一行显示*/ c.gridwidth = GridBagConstraints.RELATIVE;
gridbag.setConstraints(panelObj6,c); frObj.add(panelObj6);
//下面的两个语句设置窗口以紧凑的方式显示 frObj.pack();
frObj.setVisible(true);
//为按钮和窗口注册事件注册器 butObj1.addMouseListener(this);
butObj2.addMouseListener(this); frObj.addWindowListener(this); }
/**方法mouseClicked用于处理鼠标单击的事件,也就是当鼠标单击事件发生后,程序就会进入该方法中执行*/
public void mouseClicked(MouseEvent e)
{//下面这个语句用于获得事件源按钮
Button butObj = (Button)(e.getSource()); /*声明一个String型变量tempStr,用于获得界面 上不同组件的字符串内容*/
String tempStr; /*声明一个StringBuffer对象totalBuf,用来进行字符串的处理操作*/ StringBuffer totalBuf = new StringBuffer();
String totalStr;
Checkbox tempCheck = groupObj.getSelectedCheckbox();
/*下面这段代码用来将有关的学生信息组合起来,用一个字符串totalStr表示*/
tempStr = tfObj.getText();
totalBuf.append(tempStr); if(checkObj.getState()==true)
totalBuf.append(" 已注册");
else totalBuf.append(" 未注册");
tempStr = tempCheck.getLabel();
totalBuf.append(" "+tempStr);
tempStr = listObj.getSelectedItem();
totalBuf.append(" "+tempStr); tempStr = choiceObj.getSelectedItem();
totalBuf.append(" "+tempStr); totalStr = totalBuf.toString();
/*下面是根据单击不同的按钮执行不同的操作*/
//如果单击的是"显示"按钮,就将信息显示在文本区域中
if(butObj.getLabel()=="显示")
{ taObj.setText(totalStr); }
//如果单击的是"保存"按钮,就将学生信息保存在文件中 else if(butObj.getLabel()=="保存")
{ //实例化InfoSave类的一个对象 InfoSave saveObj = new InfoSave();
/*调用InfoSave类的writeFun方法将学生信息写入文件中*/
saveObj.writeFun(totalStr);
}
}
//下面的语句重写MouseListener和WindowListener接口中的方法
public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){} public void mouseReleased(MouseEvent e){}
//重写windowClosing方法,关闭窗口时,程序退出 public void windowClosing(WindowEvent e){ System.exit(0); }
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowClosed(WindowEvent e){} public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
}
//类InfoSave用于将信息写入到文件中存储起来
class InfoSave
{
boolean boolObj; public void writeFun(String str)
{ try{ //创建一个File对象fileObj File fileObj = new File("stuIfo.txt");
/*下面的语句首先通过使用getBytes()方法将参数字符串放到一个byte数组中,"8859_1"用于指定编码方式,使得输入的汉字可以正确的输入到文件中*/
String wrStr = new String(str.getBytes(),"8859_1");
/*如果当前目录下不存在stuIfo.txt文件,就创建该文件*/
if(fileObj.exists()==false) boolObj = fileObj.createNewFile();
/*创建一个RandomAccessFile对象,用于进行随机访问文件的处理*/ RandomAccessFile ranFile = new RandomAccessFile(fileObj,"rw"); //下面两个语句将文件指针放在文件的结尾处
long len = ranFile.length();
ranFile.seek(len);
/*将字符串wrStr写入文件的结尾处,并且每次写入新的信息,都换行写入*/ ranFile.writeBytes("\r\n"+wrStr);
ranFile.close(); }
catch(UnsupportedEncodingException e)
{System.out.println(e); } catch(IOException e)
{System.out.println(e); }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -