结构推理
一个用AWT编写的用户登陆程序说明如下:
①用户界面大小为200*160像素,如下图所示:
②用户类型包括学生用户和教师用户,缺省为学生用户。
③“确定”按钮功能:如果用户名为空,则打印"用户名不可为空!";如果密码为空,则打印"密码不可为空!";如果是学生用户,用户名和密码都是s,登陆成功则打印"学生用户登陆成功";如果是教师用户,用户名和密码都是t;登陆成功则打印"教师用户登陆成功";如果登陆不成功,则打印"用户名不存在或者密码不正确!"。
④“取消”按钮功能:将用户名和密码的输入框清空。
⑤“退出”按钮功能:退出程序
⑥窗口事件不处理
⑦该程序的代码框架如下:
import java.awt.*;
import java.awt.event.*;
public class UserLogin extends Frame implements ActionListener,ItemListener{
Panel panel1,panel2; //定义两个面板
Label userType,userLabel,pswLabel;//分别定义用户类型、用户名和密码标签
TextField userName,psw;//分别定义用户名和密码文本框
Button yesBtn,cancelBtn,exitBtn;//分别定义确定、取消和退出按钮
Choice userSelect;//用户类型下拉框
int userID=0; //定义用户类型标志变量,0表示学生用户,1表示教师用户
public UserLogin(){ //定义用户登陆界面的构造方法
……
}
…… //事件处理的方法代码块
public static void main(String args[]){
new UserLogin();
}
}
根据以上要求,完成下面两个问题的代码:
(1)补全用户登陆界面的构造方法的代码
(2)写出该用户登陆的事件处理方法的代码
【正确答案】(1)用户登陆界面的构造方法的参考代码如下:
public UserLogin(){
super("用户登录");
userType=new Label("用户类型",Label.CENTER);
userSelect=new Choice();
userSelect.add("学生用户");
userSelect.add("教师用户");
userSelect.addItemListener(this);
userLabel=new Label("用户名:",Label.CENTER);
pswLabel=new Label("密 码:",Label.CENTER);
userName=new TextField(10);
psw=new TextField(10);
yesBtn=new Button(" 确 定 ");
cancelBtn=new Button(" 取 消 ");
exitBtn=new Button(" 退 出 ");
yesBtn.addActionListener(this);
cancelBtn.addActionListener(this);
exitBtn.addActionListener(this);
panel1=new Panel();
panel1.setLayout(new GridLayout(3,2));
panel2=new Panel();
setLayout(new BorderLayout());
panel1.add(userType);
panel1.add(userSelect);
panel1.add(userLabel);
panel1.add(userName);
panel1.add(pswLabel);
panel1.add(psw);
add(panel1,BorderLayout.CENTER);
panel2.add(yesBtn);
panel2.add(cancelBtn);
panel2.add(exitBtn);
add(panel2,BorderLayout.SOUTH);
setSize(200,160); //或写成setBounds(300,300,200,160);
setVisible(true);
}
(2) 事件处理方法的参考代码如下:
public void itemStateChanged( ItemEvent e ){
i=userSelect.getSelectedIndex();
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==cancelBtn){
userName.setText("");
psw.setText("");
return;
}
if(e.getSource()==exitBtn){
System.exit(0);
}
else {
if(userName.getText().trim().equals("")){
System.out.println("用户名不可为空!");
return;
}
if(psw.getText().trim().equals("")){
System.out.println("密码不可为空!");
return;
}
switch(i){
case 0:
if(userName.getText().trim().equals("s")&&psw.getText().trim().equals("s")){
System.out.println("学生用户登陆成功!");
break;
}
case 1:
if(userName.getText().trim().equals("t")&&psw.getText().trim().equals("t")){
System.out.println("教师用户登陆成功!");
break;
}
default: System.out.println("用户名不存在或者密码不正确!");
}
}
}
【答案解析】