结构推理 一个用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("用户名不存在或者密码不正确!"); } } }
【答案解析】