当前位置 主页 > 网站技术 > 代码类 >

    java中接口和事件监听器的深入理解

    栏目:代码类 时间:2019-12-29 21:06

    一:接口

    接口在我们生活中无处不在,通过一个usb接口,我们可以通过u盘传输数据,这个接口是被定义过的,只有指定的类型能够使用这个接口,且通过这个接口我们传输的数据不会被破坏。

    而在java中接口作用类似,定义一个具有特定特点的接口,在合适的地方引用它,执行所对应的功能,这样能够实现代码的分离。

    下面我们来看一下接口的定义:

       关键字:interface
       格式:public interface 接口名{ }

    接口的属性:

       [public static final]属性类型 属性名=属性值;
       static:静态的,修饰的内容可以通过类名或接口名直接访问。
       final:不可改变的,修饰属性,则属性必须初始化。
       [ ]里的内容可以省略

    接口的方法:

       [public abstract]方法返回值类型 方法名(参数类型 参数名)
       abstract:抽象的,修饰方法,则方法不能有方法体。
       [ ]中内容可以省略

    接口的使用:

    接口不能创建对象,需要接口类型的对象则需要创建一个类,从而实现接口

       关键字:implements
       格式:public class 类名 implements 接口名{ }
       **注意:在类中实现接口时,必须实现接口中所有的方法**

    总结来说,接口相当于制定了一种规则,只有符合这种规则了才能进入相应的接口。

    二:事件监听机制

    想象一下,比如在生活中,有一个摄像头在监视着小明,监督他好好学习,如若发现他在做别的事情则会发出警告提示让他继续学习,而在java中原理也是一样。

    给事件源组件添加事件监听器,当事件源组件上发生相应类型的事件时,则自动的调用监听器中的内容。

    在电脑上常见的事件类型有三种

        鼠标事件:用鼠标操作组件(鼠标的移动,点击,松开)
        键盘事件:用键盘操作组件(按动键盘的按键)
        动作事件:包含鼠标点击按钮,键盘确认等。

    事件源组件:事件发生所在的组件,比如在一个创建好的画图板上。

    事件监听器:java中为每一种类型的事件都提供了一个对应类型的事件监听器。

       鼠标事件监听器:MouseListener
       键盘事件监听器:KeyListener
       动作事件监听器:ActionListener

    事件监听器的实现:

      第一步:确定事件源组件
         例如一个按钮
      第二步:确定事件类型
         点击按钮则为动作事件
      第三步:
         创建一个监听器类,实现对应类型的监听器接口
      第四步,在源程序创建监听器对象,给事件源组件添加事件监听器。

    下面我们看一个登陆界面的实例

    这一段是建立一个登陆界面

    public class UI {
     /**
     * 
     */
     public void showIU(){
     //建立新界面
     JFrame frame=new JFrame();
     frame.setSize(600, 900);
     //用户点击关闭窗口时关闭界面
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     //流式布局
     FlowLayout layout=new FlowLayout();
     frame.setLayout(layout);
     //插入账号文本框
     JTextField register=new JTextField(30);
     frame.add(register);
     //标签1
     JLabel label1=new JLabel("注册账号");
     frame.add(label1);
     //密码
     JPasswordField word=new JPasswordField(30);
     frame.add(word);
     //标签2
     JLabel label2= new JLabel("找回密码");
     frame.add(label2);
     
     JCheckBox checkbox=new JCheckBox("记住密码 ");
     frame.add(checkbox);
     //设置复选框大小
     Dimension check =new Dimension(200,35);
     checkbox.setPreferredSize(check);
     
     
     //加入接口类
     lisener lisen=new lisener();
     //给按钮添加监听器
     butt.addActionListener(lisen);
     //让监听器的文本框和处理的文本框对应
     lisen.nameinput=register;
     lisen.passinput=word;
     //让监听器的框与此相同
     lisen.jiemian=frame;
     
     word.addActionListener(lisen);
     
     /*
     //加入接口
     Listener2 lisen1=new Listener2();
     //添加监听器
     word.addKeyListener(lisen1);
     //对应文本框和密码框
     lisen1.name1=register;
     lisen1.pass1=word;
     lisen1.frame=frame;
     */
     //设置界面可见
     frame.setVisible(true);
     
     }
     public static void main(String[] args){
     UI ui=new UI();
     ui.showIU();
     }
    }