监听器的部分内容及小知识点

组件:javax.swing
容器组件:组件上可以继续放置组件的
顶层容器:JFrame、JWindow、JDialog
中间层容器:JPanel、JScrollPane
功能性组件:提供相应功能的组件类型
JButton、JLabel、JTextArea、JTextField…..

注意:setSize(专门只设置顶层容器)
setPrefferedSize(中间层容器、功能组件)

布局:java.awt
FlowLayout:流式布局
BorderLayout:边框布局
GridLayout:网格布局
null:绝对布局(setBounds)

规范:
命令规范:
1、不要太随意,通过当前这个类的功能进行命名
2、名字遵循驼峰式命名法:除了第一个单词有特殊性情况外,后面每个单词的首字母必须大写
类:第一个单词的首字母也大写
属性名:第一个单词的首字母小写
方法名:第一个单词的首字母小写

包名规则:递进式,多级包名:com/cn.公司名字.包的功能名
所有单词全部小写
注释规范:
类的注释:/**
* 注释说明
* @author
**/
方法注释:
/**
* 实现加法操作的函数
* @param a 参数,用于方法内部使用,提供值得引导
* @return 运行后的结果
*/
指定行代码注释://注释内容

加号在编程中的作用
连接符:把两个内容连接起来,形成一个新的内容 “a”+”b” = “ab”
加号两边如果有任何一遍是字符串,则就是当连接符使用,得到的结果依然是字符串
运算符:数学里面的加法运算 1+2 = 3
加号两边如果都是基本数据类型(int、float、double、char、byte),就是运算符,结果依然是基本数据类型

String字符串类
可以用于存储当前字符串的值
赋值操作:1)直接赋值法 2)构造对象法
==:是判断内存地址是否相同
字符串判断:equals方法

监听实现
抽象类和接口复习
方法分类:普通方法、抽象方法、构造方法
类的分类:普通类、抽象类、接口

抽象类和接口作用:不能创建对象,只能被继承来约束子类方法定义

普通类:员工
抽象类:中层管理员 (适配器)
接口:顶层老板

监听器分析
定义:用于监听工具中某些操作事件的对象,就类似于生活中的监控
案例:从一个界面跳转到另外一个界面

//定义一个窗体
public class MyFrame extends JFrame{
    public void initFrame(){
        this.setSize(300,300);
        this.setDefaultCloseOperation(3);
        this.setLocationRelativeTo(null);
        this.setLayout(new FlowLayout());
        JButton button = new JButton("跳转到另外一个界面");
        this.add(button);
        this.setVisible(true);

        //给按钮添加一个监听器(事件监听:ActionListener)
        ButtonListener bl = new ButtonListener();
        //把事件监听器对象绑定到按钮上
        button.addActionListener(bl);
    }
}
//定义第二个窗体
public class NextFrame extends JFrame{
    public void initFrame(){
        this.setSize(300,300);
        this.setDefaultCloseOperation(3);
        this.setLocationRelativeTo(null);
        this.setLayout(new FlowLayout());
        JLabel label = new JLabel("我是第二个界面");
        this.add(label);
        this.setVisible(true);
    }
}
//定义事件监听器
public class ButtonListener implements ActionListener{
    /**
     * 监听方法:当你触发了当前这个监听器对象后,这个方法会自动执行
     */
    public void actionPerformed(ActionEvent e) {
        //在点击按钮后自动执行的
        NextFrame nf = new NextFrame();
        nf.initFrame();
    }
}
//主函数
public class Test {
    public static void main(String[] args) {
        MyFrame mf = new MyFrame();
        mf.initFrame();
    }
}

分类:鼠标监听器、事件监听器、键盘监听器
事件监听器:重点是给按钮添加(JButton、JRadioButton、JMenuItem)
鼠标监听器:在指定范围内监听鼠标的动作(按下、释放、点击、移动、拖动..)
一般是用于监听容器组件(JPanel、JWindow、JFrame)
键盘监听器:监听在指定范围内,键盘的操作(按下、释放)
案例:绘特殊图形的鼠标监听实现

public class DrawListener implements MouseListener{
    public Graphics g;
    public ButtonGroup bg;
    //定义全局的坐标
    public int x1,y1,x2,y2;
    //定义一个变量,用于控制当前图形绘制的类型
    public String type="0";
    public DrawListener(Graphics g,ButtonGroup bg){
        //此处的画笔和单选按钮是窗体传过来的
        this.g = g;
        this.bg = bg;
    }
    /**
     * e参数:记录当前鼠标按下后所有相关数据的
     */
    public void mousePressed(MouseEvent e) {
        //1.记录按下的时候的坐标
        x1 = e.getX();
        y1 = e.getY();
        //从按钮组中来检验被选中按钮是哪个?
        ButtonModel bm = bg.getSelection();
        String command = bm.getActionCommand();
        type = command;
    }
    public void mouseReleased(MouseEvent e) {
        //2.获取释放点的坐标
        x2 = e.getX();
        y2 = e.getY();
        //3.两点绘制图形(画笔:Graphics)
        if(type.equals("0")){
            g.drawLine(x1, y1, x2, y2);
        }else if(type.equals("1")){
            g.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2-x1), Math.abs(y2-y1));
        }else if(type.equals("2")){
            g.drawOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2-x1), Math.abs(y2-y1));
        }
    }   

    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mouseClicked(MouseEvent e) {}
}

Java提供的监听机制:
从属包:java.awt.event
事件监听:ActionListener
鼠标监听:MouseListener、MouseMotionListener、MouseWheelListener
键盘监听:KeyListener

什么情况下会形成点击操作?1)按下和释放合起来 2)按下和释放在同一个位置
相应监听动作分析:
ActionListener:监听按钮被触发的事件(只有一个方法需要实现)
MouseListener:监听鼠标的相应动作(按下、释放、进入、退出、点击)
KeyListener:监听键盘的相应动作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值