请完成对本周的学习小结,上机课没完成布局管理器的同学还可以继续完成。

 1 import javax.swing.*;
 2 import java.awt.*;
 3 
 4 public class LoginWindow 
 5 {
 6    JFrame frame;
 7    JLabel lblUser,lblPsw,lblResult;
 8    JTextField tfUser;
 9    JPasswordField pfPsw;
10    JButton btnLogin,btnReset;
11    
12    public LoginWindow()
13    {
14        frame = new JFrame("登录窗体");
15        lblUser = new JLabel("用户名");
16        lblPsw = new JLabel("密码");
17        lblResult = new JLabel();
18        tfUser = new JTextField();
19        pfPsw = new JPasswordField();
20        btnLogin = new JButton("登录");
21        btnReset = new JButton("重置");
22        
23        frame.setLayout(null);
24        
25        lblUser.setBounds(10,10,40,30);
26        lblPsw.setBounds(10,50,40,30);
27        tfUser.setBounds(60,10,100,30);
28        pfPsw.setBounds(60,50,100,30);
29        btnLogin.setBounds(40,90,60,30);
30        btnReset.setBounds(120,90,60,30);
31        lblResult.setBounds(50,140,200,30);
32        
33        
34        frame.add(lblUser);
35        frame.add(lblPsw);
36        frame.add(tfUser);
37        frame.add(pfPsw);
38        frame.add(btnLogin);
39        frame.add(btnReset);
40        frame.add(lblResult);
41        
42        
43        
44        MyListener listener = new MyListener(this);
45        btnLogin.addActionListener(listener);
46        btnReset.addActionListener(listener);
47        
48        frame.setSize(400,300);
49        frame.setVisible(true);
50    }
51 }
1 public class Test {
2 
3     public static void main(String[] args) 
4     {
5         new LoginWindow();
6 
7     }
8 
9 }
 1 import java.awt.event.ActionEvent;
 2 import java.awt.event.ActionListener;
 3 
 4 import javax.swing.JButton;
 5 
 6 public class MyListener implements ActionListener
 7 {
 8     
 9     LoginWindow loginWindow;
10     
11     public MyListener(LoginWindow loginWindow)
12     {
13         this.loginWindow = loginWindow;
14     }
15     
16     public void actionPerformed(ActionEvent event)
17     {
18         if(event.getSource() instanceof JButton)
19         {
20             JButton btn = (JButton)event.getSource();
21             if(btn == loginWindow.btnLogin)
22             {
23                 String username = loginWindow.tfUser.getText();
24                 String psw = new String(loginWindow.pfPsw.getPassword());
25                 
26                 if(username.equals("admin")&&psw.equals("123456"))
27                 {
28                     loginWindow.lblResult.setText("登录成功");
29                 }
30                 else
31                 {
32                     loginWindow.lblResult.setText("登录失败");
33                 }
34             }
35             else if(btn==loginWindow.btnReset)
36             {
37                 loginWindow.tfUser.setText("");
38                 loginWindow.pfPsw.setText("");
39             }
40         }    
41         
42     }
43 }

运行结果:

 

 

 

 

 

 

 

监听器模型涉及以下三个对象,模型图如下:

(1)事件:用户对组件的一个操作,或者说程序执行某个方法,称之为一个事件,如机器人程序执行工作。
(2)事件源:发生事件的组件就是事件源,也就是被监听的对象,如机器人可以工作,可以跳舞,那么就可以把机器人看做是一个事件源。
(3)事件监听器(处理器):监听并负责处理事件的方法,如监听机器人工作情况,在机器人工作前后做出相应的动作,或者获取机器人的状态信息。

执行顺序如下:

1、给事件源注册监听器。
2、组件接受外部作用,也就是事件被触发。
3、组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器。
4、事件处理器启动,并执行相关的代码来处理该事件。

匿名内部类:

匿名内部类也就是没有名字的内部类

正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写

但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口

 

posted on 2019-11-16 11:39  青春永驻岁月无忧  阅读(149)  评论(0编辑  收藏  举报