Java接口和事件监听机制

使用Java能够实现一个图形用户界面之后,自然而然地会考虑一个问题就是:我们可以在窗体上添加一些按钮和文本框来实现一个简单的登录界面,但是不论是按钮还是文本框或者密码区,我们都没办法进行实际的操作,点击登录按钮没办法实现一个登录的功能,账号和密码的位置也只能完成输入的功能。想要实现这样一个登录页面的基本功能,需要了解一下Java的事件监听机制,在这之前先看一下接口是一个什么东西。

一、接口

接口的结构和类是很相似的,在类的内部可以定义一些变量、常量和方法,其中方法可以是抽象的也可以是实现好的,但在接口的定义中只可以包含常量和抽象方法,这里的抽象方法声明的时候还需要一个关键字abstract,大概的结构就是这个样子了:

  1. public interface 接口名称{
  2.     public abstract 返回值类型 抽象方法名();
  3.     //当然还可以定义一些常量,比如
  4.     public static String name = "123456";

要注意的一点是接口中的关键字只有public,static,final,abstract。

接下来要考虑一个问题是,我们已经知道了接口的结构了,该怎么使用它呢?既然只能创建抽象方法,说明这个方法不能在接口内部直接实现,那么这个抽象方法该怎么实现呢?这里用到了类的继承,我们可以将接口中的方法继承过来再进行修改,这样就可以使用之前定义过的方法啦。到这里还应该想到一个问题,为什么这样做呢,在我理解来说,就在于“变”与“不变”。“变”的是什么,是我们继承过来后对于接口中方法的改写,根据不同的应用需求可以有不同的实现方法。“不变”的部分也可以有两种理解吧,首先是稳定性,由于只能采用继承这样一种方法,不会对接口中的内容有什么改动,其次是规范,如果是多人合作实现的一个工程,使用这个接口的人都要实现这个接口中的方法,这样形成了这样一种规范。

二、事件监听机制

回到最初的问题,我们想要实现这个登录界面的基本功能,和前面讲的接口有什么关系。这里需要Java中的事件监听机制,这个机制也很好理解,监听其实就是监控一些事件的状态,都有什么事件呢,比如我们前面想要实现的,点击按钮,在文本框和密码部分输入内容能有所反应,这就是一个事件。

事件监听机制由三部分组成,事件源对象、事件监听方法、事件接口。

先说事件源对象吧。这个很好理解,我们监听事件是需要依托于具体的对象的,比如图形用户界面的窗体,窗体上的各种组件,按钮、文本框……如果这个事件发生在某一个元素组件或容器上,那它就是一个事件源对象。

事件监听方法是由事件源对象提供的,主要作用就是用来监听源对象上发生的一些动作,比如按钮上出现了点击动作,这个时候会有一个addActionListener(ActionListener l)把这些动作信息和源对象上的一些信息传入到监听方法中进行处理,需要的话再进行一些反馈,比如点击了按钮之后会出现什么现象。

事件接口需要对前面提到的信息进行相应的处理,执行方法中的代码,实现一些预期的效果。在这个位置要注意的一件事是由于我们是将接口继承过来使用的,所以接口中的所有抽象方法都要实现,就算这个方法对我们的事件监听并没有什么实际的用处,也要实现它。

三、具体改进

接下来要做一些实际的事情了,首先考虑一下前面的页面上的按钮,比如说想要点击它就打开一个新窗体,同时将原来的登录窗体关闭。打开一个窗体其实是不难的,当我们的事件监听机制发现按钮被点击后再重新建一个窗体就好了。但是我们这个方法是针对按钮来做的,要怎么才能把原来的窗体关闭呢,这个地方是比较不好想的……就是使用一个构造函数,在这里可以将窗体对象作为参数传入事件监听方法,然后使用dispose()函数将原窗体关闭,这样就可以了。

可是这样只会新建窗体还是太简单了一点,想要把它做成和一个真正的登录界面差不多的东西还需要验证账号和密码,考虑账号、密码正确和二者不匹配这两种情况,当匹配的话则弹出一个新窗体并关闭原窗体,否则的话就弹出一个小窗提示错误信息,有了前面的经验这里就好做多了,无非就是多传了几个参数嘛,这样一个简单的登录页面就做好了。

实现的部分代码像这样↓

这里设置的用户名和密码只有一种,毕竟只是为了测试我们的事件监听机制。接下来看一下效果吧

如果输入正确的账号和密码

会弹出一个小窗并且原来的登录界面已经被我们关闭了。但是如果输入错误呢,就会弹出一个小窗提示警告信息如图:

这样就做好啦,有些地方可能讲的还不是特别清楚,日后有时间再改吧。

猜你喜欢

转载自blog.csdn.net/LieberVater/article/details/83096731