简述:
步骤:
(1)构造界面(将组件对象加入容器对象,注意:应设定对容器对象的布局策略)
(2)为界面加入事件响应处理(如单击按钮)
实现:
两种方式实现,只有用户名为"admin"且密码为"1129"时才会显示,"admin,欢迎您",否则提示输入错误。

一般方法
package harper1125.GUI;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Color;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class login01 extends JFrame implements ActionListener{
    public static void main(String[] args) {
        new Click_button();
    }
    private JButton b_ok,b_exit;
    private JLabel t_la;//用于显示信息的标签
    private JTextField userName;//用户文本框
    private JPasswordField password;//密码框
    public login01() {
        super("第一个登陆界面");//设定窗体标题
        setSize(500, 100);//设定框架宽度和高度
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBackground(Color.lightGray);
        setLocation(300, 240);//指定框架左上角的显示位置,(0,0)表示屏幕的左上角
        setLayout(new FlowLayout());//指定框架的默认布局方式,
        /**
         * 若未指定布局,组件将自动布满整个容器,后面加入的组件回遮盖前面的组件
         */
        userName = new JTextField(5);
        password = new JPasswordField(5);
        add(new JLabel("用户名:"));
        add(userName);
        add(new JLabel("密码:"));
        add(password);
        b_ok = new JButton("确定");
        add(b_ok);
        b_exit = new JButton("退出");
        add(b_exit);
        t_la = new JLabel(" ");
        add(t_la);//增加一个临时标签,用来显示信息
        setVisible(true);
        /**
         * 以下建立事件源与处理者之间的关联,两个按钮使用同一个处理者对象
         */
        b_exit.addActionListener(this);//建立关联
        b_ok.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e){//处理者处理事件
        if(e.getSource()== b_exit){
            //用e.getSource()识别事件源
            System.exit(0);
        }
        if(e.getActionCommand().equals("确定")){
            //用另一种方式识别事件源
            String ketText = String.valueOf(password.getPassword());
            //获取密码框的文本
            if(userName.getText().equals("admin") && ketText.equals("1129")){
                t_la.setText("欢迎您,admin");
            }else {
                t_la.setText("用户或密码输入错误!");
                setVisible(true);//显示临时标签
            }
        }
    }
}
界面与事件处理者相分离的方法
package Test.test4;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
    public class login02  {
        public static void main(String[] args) {
          login lo = new login();
          Del de = new Del();
          lo.setDel(de);
            de.setLogin(lo);
        }
    }
     class login extends JFrame {
        JButton b_ok,b_exit;
        JLabel t_la;//用于显示信息的标签
        JTextField userName;//用户文本框
        JPasswordField password;//密码框
public login() {
        super("第一个登陆界面");//设定窗体标题
        setSize(500, 100);//设定框架宽度和高度
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBackground(Color.lightGray);
        setLocation(300, 240);//指定框架左上角的显示位置,(0,0)表示屏幕的左上角
        setLayout(new FlowLayout());//指定框架的默认布局方式,
        /**
         * 若未指定布局,组件将自动布满整个容器,后面加入的组件回遮盖前面的组件
         */
        userName = new JTextField(5);
        password = new JPasswordField(5);
        add(new JLabel("用户名:"));
        add(userName);
        add(new JLabel("密码:"));
        add(password);
        b_ok = new JButton("确定");
        add(b_ok);
        b_exit = new JButton("退出");
        add(b_exit);
        t_la = new JLabel(" ");
        add(t_la);//增加一个临时标签,用来显示信息
        setVisible(true);
        /**
         * 以下建立事件源与处理者之间的关联,两个按钮使用同一个处理者对象
         */
        }
        Del del;
public  void setDel(Del l){
        del = l;
    b_exit.addActionListener((ActionListener) l);//建立关联
    b_ok.addActionListener((ActionListener) l);
        }
        }
        class Del implements  ActionListener{//处理者处理事件
            login l;
            public void setLogin(login lo){
                l = lo;
            }
            public void actionPerformed(ActionEvent e){
                if(e.getSource()== l.b_exit){
                    //用e.getSource()识别事件源
                    System.exit(0);
                }
                if(e.getActionCommand().equals("确定")){
                    //用另一种方式识别事件源
                    String ketText = String.valueOf(l.password.getPassword());
                    //获取密码框的文本
                    if(l.userName.getText().equals("admin") && ketText.equals("1129")){
                        l.t_la.setText("欢迎您,admin");
                    }else {
                        l.t_la.setText("用户或密码输入错误!");
                        l.setVisible(true);//显示临时标签
                    }
                }
            }
        }



















