Java之GUI编程(事件监听)

监听事件

事件监听机制的特点:

1.事件源

2.事件

3.监听器

4.事件处理

事件源:就是awt包或者swing包中的那些图形用户界面组件。(如:按钮)
事件:每一个事件源都有自己特点有的对应事件和共性事件。(如:鼠标单击事件)
监听器:将可以触发某一事件的动作(不止一个动作)都已经封装到了监听器中。
以上三者,在java中都已经定义好了, 直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理。

事件监听

package gui.study;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Demo08 {
    public static void main(String[] args) {
        Frame frame = new Frame();
        //点击按钮触发事件
        Button button = new Button();
        MyActionListener myActionListener = new MyActionListener(); //对象实例化!静态调用非静态需实例化对象
        button.addActionListener(myActionListener);
        frame.add(button, BorderLayout.CENTER);
        frame.setSize(400,400);
        frame.setLocation(300,400);
        WindowClose(frame);  //调用WindowClose方法! 关闭窗口
        frame.setVisible(true); //可视化
    }
        //方法! 关闭窗口事件
    private static void WindowClose(Frame frame){
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent windowEvent) {
                System.exit(0);
            }
        });
    }
}

        //定义类! 窗口监听事件
    class MyActionListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            System.out.println("你点击了一次");
        }
    }


运行结果:
在这里插入图片描述

输入框监听事件

package com.gui;
//输入框监听事件
import java.awt.*;
import java.awt.event.*;
public class Demo02 {
    public static void main(String[] args) {
        MyFrame myFrame = new MyFrame();
    }
}
class MyFrame extends Frame{
    public MyFrame() {
        TextField textField = new TextField();
        add(textField);
        //监听这个文本框输入的文字
        MyActionListener myActionListener = new MyActionListener();
        //按下Enter键就会触发这个输入框事件
        textField.addActionListener(myActionListener);
        textField.setEchoChar('*');  //设置替换编码!可用于密码输入
        setSize(400,400);  //设置窗体大小
        setLocation(300,400); //设置起始坐标
        setVisible(true); //可视化
        //设置窗口关闭事件
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}
 class MyActionListener implements ActionListener{ //继承事件监听类
     @Override
     public void actionPerformed(ActionEvent e) {
        TextField textField = (TextField) e.getSource();
         System.out.println(textField.getText()); //获得输入框文本
         textField.setText("");  //按下Enter键自动清空输入框内字符
     }
 }

运行结果:
在这里插入图片描述

内部类实现简单加法计算器

package com.gui;
//内部类实现简单加法计算器
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Demo03 {
    public static void main(String[] args) {
        new Calculator().Calculator();   //实例化
    }
}
//计算器类
class Calculator extends Frame{
    TextField num1,num2,num3;
    public void Calculator(){
        num1 = new TextField(10);  //文本框! 设置字符数
        num2 = new TextField(10);
        num3 = new TextField(20);

        Button button = new Button("=");  //按钮
        button.addActionListener(new MyCalculatorListener());
        Label label = new Label("+");  //标签

        setLayout(new FlowLayout()); //流式布局
        add(num1);
        add(label);
        add(num2);
        add(button);
        add(num3);

        setLocation(300,400);
        setSize(500,100);
        setVisible(true);
        //关闭窗口事件
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
    //监听类
    private class MyCalculatorListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            //获取加数和被加数
            int n1 = Integer.parseInt(num1.getText()); //将String类型转换为int类型
            int n2 = Integer.parseInt(num2.getText());
            //将前两个值家法运算后,放至第三个文本框
            num3.setText(""+(n1+n2));

            num1.setText("");  //清空文本框字符
            num2.setText("");
        }
    }
}


运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值