界面中事件监听

简介:

        在上篇创建简单的窗体口点击按钮并未反应,因为按钮的作者并未知道开发者使用按钮创建对象用于干什么,但他知道了你是否点击了按钮。因此设计了一套底层运行的调用逻辑,点击按钮时会调到一个接口中的方法。但这个方法没有具体的内容,为抽象方法。因此需要开发者自己编写。

        动作监听器接口:ActionListener 在java.awt.event中

步骤:

        1.创建一个新的类 LoginAction

        2.实现动作监听器接口:

        public class LoginAction implements ActionListener{ }

        注:在类文件后添加了implements ActionListener

        3.实现接口的类中,必须重写接口的抽象方法

        public void actionPerformed(ActionEvent e){ }

        4.给方法中添加点击按钮之后需要执行的文件的代码

        5.在按钮的类中给这个类创建一个对象,使用按钮的addActionListener方法添加注册这个对象。

点击按钮后获取输入款的文本:

        1.输入框获取文本:输入框对象变量名.getText();

        2.界面上的输入框对象传一份给监听器中。

        在监听器中创建一个JTextField的对象。

        在界面输入框的类中进行调用传送。

同时监听多个按钮:

ActionEvent:动作事件

        1.每次点击按钮都会传入一个当前时间的对象

        2.事件对象中包含了事件的相关数据 比如按钮的文本

public void actionPerformed(ActionEvent e) {}

因此可以利用按钮上的文本进行区分。

String ac = e.getActionCommand();

练习:

package lcr0329;

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

public class LoginUI {
    public void showUI(){
        //窗体设置
        JFrame jf = new JFrame();
        jf.setTitle("QQ登录界面");
        jf.setSize(230,400);
        jf.setDefaultCloseOperation(2);
        FlowLayout fl = new FlowLayout();
        jf.setLayout(fl);
        //标签
        JLabel jl1 = new JLabel("账号:");
        JLabel jl2 = new JLabel("密码:");
        //输入框
        JTextField jtf1 = new JTextField();
        JPasswordField jtf2 = new JPasswordField();
        Dimension dim = new Dimension();//Dimension dim = new Dimension();
        dim.setSize(150,25);//dim.setSise(150,25);
        jtf1.setPreferredSize(dim);//
        jtf2.setPreferredSize(dim);
        //图片
        String path = "C:\\Users\\15697\\IdeaProjects\\Pro24\\src\\lcr0328\\11.jpg";
        ImageIcon icon = new ImageIcon(path);
        JLabel iconjla = new JLabel();
        iconjla.setIcon(icon);
        //按钮
        JButton jb = new JButton("登录");
        JButton jb1 = new JButton("注册") ;
        //按钮监听器
        LoginAction la = new LoginAction();

        la.nameJtf = jtf1;
        la.pwdJtf = jtf2;
        jb.addActionListener(la);
        jb1.addActionListener(la);

        //
        jf.add(iconjla);
        jf.add(jl1);
        jf.add(jtf1);
        jf.add(jl2);
        jf.add(jtf2);
        jf.add(jb);
        jf.add(jb1);
        jf.setVisible(true);

    }

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

    }
}
package lcr0329;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class LoginAction implements ActionListener {
    JTextField nameJtf;
    JPasswordField pwdJtf;

    String name1;
    String pwd1;
    @Override
    public void actionPerformed(ActionEvent e) {
        String name = nameJtf.getText();
        String pwd = pwdJtf.getText();
        String ea = e.getActionCommand();;

        if (ea.equals("注册")) {
            name1 = name;
            pwd1 = pwd;

        }else if(ea.equals("登录")){
            if (name.equals(name1)) {
                System.out.print("账号正确 ");
                if (pwd.equals(pwd1)) {
                    System.out.println("密码正确");
                    //UInext ui = new UInext();
                    //ui.showNext();
                } else {
                    System.out.println("密码错误");
                    pwdJtf.setText("");
                }
            } else {
                System.out.println("账号错误");
                nameJtf.setText("");
                pwdJtf.setText("");
            }
        }else{
            System.out.println("错误");
        }
    }
}

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值