栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java 基础学习-面向对象-04接口的用法(监听器)】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java 基础学习-面向对象-04接口的用法(监听器)】

监听器概念
  • 监听器使按钮响应,通过调用按钮对象这个方法加上监听器
  • 动作监听器 ActionListener 属于系统的一个接口类
  • 监听时,需要自己写个类实现接口类,用implements 实现a
  • 实现接口后,必须重写actionPerformed方法,事件发生时调用
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
//输入
public class LoginListen implements ActionListener{
// 实现监听器接口类 
 public void actionPerformed(ActionEvent e){
  //重写方法,点击时会调用方法
   // 加入自己的代码
    }
}
  • 绑定按钮操作
 LoginListen listen = new LoginListen ();
  // 创建新的对象
  btn.addActionListener (listen);
  //按钮添加监听器,括号里是对象名
代码实现

目标:

  • 创建一个登陆与注册界面,点击登陆按钮,输出账号密码内容
  • 当输入正确的账号密码后,点击登录,按钮响应,弹出“登陆成功”界面
  • 当输入错的信息后,点击登陆,自动清空账号密码
  • 当点击注册按钮时,弹出注册界面

实例:
第一部分:登陆界面

  • LoginUI.java
import javax.swing.JFrame;// 窗体
import javax.swing.JLabel;// 标签
import javax.swing.JTextField;// 文本输入框
import javax.swing.JPasswordField;//密码输入框
import javax.swing.JButton;// 按钮
import javax.swing.ImageIcon;// 图片/图标
import java.awt.Dimension;// 尺寸
import java.awt.FlowLayout;// 流式布局

public class LoginUI{
    public void showUI(){
        // 写创建窗体的所有代码
        // 1: 创建一个窗体对象
        JFrame jf = new JFrame ();
        // 2: 使用窗体对象名调用方法设置 标题、尺寸、关闭操作选项、可视化 、布局
        jf.setTitle ("登录界面");
        jf.setSize (500,700);// 单位: 像素点
        jf.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        jf.setVisible (true);// 显示到屏幕

        // 创建流式布局对象
        FlowLayout flow = new FlowLayout ();
        jf.setLayout (flow);

        // 3: 创建组件对象 标签 按钮 输入框 密码输入框
        JLabel nameJla = new JLabel ();
        JLabel pwdJla = new JLabel ();
        JLabel imgJla = new JLabel ();

        JButton btn = new JButton ();
        JButton btnrst = new JButton ("注册");

        JTextField nameIn = new JTextField ();
        JPasswordField pwdIn = new JPasswordField ();

        // 4: 使用组件对象名 设置组件需要的属性 文本 尺寸 颜色 ...
        nameJla.setText ("账号:");
        pwdJla.setText ("密码:");
        // 图片 ()中写一个图片的文件地址
        ImageIcon  icon = new ImageIcon ("C:\Users\ZLYLF\Desktop\testtiger.png");
        imgJla.setIcon (icon);
        btn.setText ("登录");

        // 尺寸
        Dimension imgSize = new Dimension (500,500);
        imgJla.setPreferredSize (imgSize);

        Dimension inputSize = new Dimension (410,35);
        nameIn.setPreferredSize (inputSize);
        pwdIn.setPreferredSize (inputSize);


        // 5: 使用窗体对象名添加组件对象名
        // 按照流式布局的规则 按顺序添加组件
        jf.add (imgJla);

        jf.add (nameJla);
        jf.add (nameIn);

        jf.add (pwdJla);
        jf.add (pwdIn);

        jf.add (btn);
        jf.add (btnrst);

        jf.setVisible (true);
       
        // 替换为具体的类 - 这个类的要求是 必须实现这个ActionListener接口
        LoginListen listen = new LoginListen ();
        // 按钮绑定监听器
        btn.addActionListener (listen);
        btnrst.addActionListener (listen);

        String str = ("qwb");
        listen.str=str;
        // 将输入框对象的对象地址 复制一份给监听器中的输入框对象名
        listen.nameIn=nameIn;
        listen.pwdIn = pwdIn;

        System.out.println (listen.str);

    }


    public static void main(String[] args){
        LoginUI loginui = new LoginUI ();
        loginui.showUI ();
    }

}
  • 在第一部分,创建登陆界面后,给按钮添加后者监听器
  • 输入框内容,在监听器部分需要校验,所以要将注册界面的输入框对象地址复制给监听器的输入框对象,进而将界面内容与监听器联系起来

第二部分:监听器
LoginListen.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class LoginListen implements ActionListener{
    String str;

    // 创建两个输入框对象名 不初始化 用listen对象来调用初始化

    JTextField nameIn;
    JPasswordField pwdIn;


    // 当实现了监听器接口的类 创建的对象绑定给按钮之后,这个按钮点击时就会调用下面这个方法
    // 必须要重写接口中的没有方法体的方法 需要将分号改为{}
    public void actionPerformed(ActionEvent e){
        // 再加入自己的代码
        System.out.println ("按钮被点击了");

        // 获取按钮上的字符串
        String actionStr = e.getActionCommand ();
        if(actionStr.equals ("登录")){
            // 获取输入框中的字符串
            String userName = nameIn.getText ();
            String userPwd = pwdIn. getText();
            System.out.println ("账号:" + userName + "n密码:" + userPwd);
            if(userName.equals ("admin") && userPwd.equals ("admin123")){
                System.out.println ("登录成功!!");
                JFrame jf = new JFrame ();
                jf.setTitle (userName + "登录成功!!");
                jf.setVisible (true);
                jf.setLocationRelativeTo (null);
                jf.setSize (500, 150);
            } else{
                System.out.println ("登录失败,请重试!");
                nameIn.setText ("");
                pwdIn.setText ("");
            }
        }else if(actionStr.equals ("注册")){
            // 调用注册界面
            JFrame jf1 = new JFrame ();
            jf1.setTitle ("注册界面");
            jf1.setSize(500,1000);
            jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            jf1.setVisible(true);
            FlowLayout flow = new FlowLayout ();
            jf1.setLayout (flow);
            
            JLabel nameJla = new JLabel ();
            JLabel pwdJla = new JLabel ();
            JLabel pnbJla = new JLabel();
            JLabel vcdJla = new JLabel();
            JLabel imgJla = new JLabel ();
            JButton btn1 = new JButton ();
            JButton btn2 = new JButton ();
            JTextField nameIn = new JTextField ();

            JPasswordField pwdIn = new JPasswordField ();
            JTextField pnbIn = new JTextField ();
            JTextField vcdIn = new JTextField ();

            nameJla.setText ("账号:");
            pwdJla.setText ("密码:");
            pnbJla.setText("手机号:");
            vcdJla.setText("验证码:");
            ImageIcon  icon = new ImageIcon ("C:\Users\Administrator\Pictures\Camera Roll\以太灰.JPG");
            imgJla.setIcon (icon);
            btn1.setText ("获取验证码");
            btn2.setText("注册");

            Dimension imgSize = new Dimension (500,500);
            imgJla.setPreferredSize (imgSize);
            Dimension inputSize = new Dimension (410,35);
            nameIn.setPreferredSize (inputSize);
            pwdIn.setPreferredSize (inputSize);
            pnbIn.setPreferredSize (inputSize);
            vcdIn.setPreferredSize (inputSize);


            jf1.add (imgJla);

            jf1.add (nameJla);
            jf1.add (nameIn);

            jf1.add (pwdJla);
            jf1.add (pwdIn);

            jf1.add (pnbJla);
            jf1.add (pnbIn);

            jf1.add (vcdJla);
            jf1.add (vcdIn);
            jf1.add (btn1);

            jf1.add (btn2);
            jf1.setVisible(true);
            jf1.setLocationRelativeTo (null);

        }
    }
}
  • 监听器部分的操作代码需要写在,重写actionPerformed方法内部。
  • public void actionPerformed(ActionEvent e){ 写操作代码 }
  • 点击按钮后,重写方法将会被调用。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号