九游会平台

Java接口和事件监听机制(升级版菜鸟文章)

发布日期:2021-07-22 14:11    点击次数:179

接口的行使与类的行使相通,但是接口具有有优于类的作用:接口能够雄厚类的继承手段(因为在于一个接口笑意实现(继承)一个或众个父接口);当你不确定手段中详细要实现什么内容时,能够选择行使接口来把手段定义为抽象手段。接口和类的区别在于定义的关键字、继承的关键字差别。

吾们先来定义一个接口(相通于类的定义)。定义接口的关键字是“interface”(类为“class”)。格式:

public interface 接口名 extends 父接口接口名,父接口接口名... (与类有别,此处能够有众个接口){

//定义常量(Java命名规则是:常量名的每一个字母要大写)

public (static final) 数据类型 常量名 = 值;

//定义抽象手段

public (abstract) 返回值数据类型 抽象手段名(数据类型 参数名,...);

}

仔细:接口不克实例化对象;接口中只能有一栽访问修饰符“public”;接口会默认挑供关键字“public”、“static”、“final”、“abstract”。所以,上述格式中的圆括号内的关键字无关主要。

接下来是实现接口。实现接口的关键字是“implements”。格式:

public class 类名 (extends 父类类名) implements 接口,接口(能够有众个接口)... {

}

在这边必需仔细:类实现(继承)接口后,类必须要实现(重写)接口(包括接口及其父接口)中一切的抽象手段;类能够先继承一个父类,然后再往实现(继承)一个或众个接口。

关于事件监听机制,它是是针对图形界面的行使程序(移动平台APP、WEB)。事件监听机制中有:事件源对象、事件监听手段(事件源对象挑供)、事件接口(即事件处理类)。

1、事件源对象:能成为事件源对象的只有容器组件和元素组件;行为发生在哪一个组件上,那么该组件就是事件源对象。

2、事件监听手段:

a、行为监听手段“addActionListener(ActionListener l);”,监听按钮组件上的鼠标点击行为和监听输入框组件上的回车行为,然后搜集行为新闻和事件源对象的新闻,将这些新闻和行为交给addActionListener()监听手段的参数ActionListener对象。

b、鼠标行为监听手段“addMouseListener(MouseListener l);”,监听事件源对象上是否有鼠标的按下,开释,点击,进入和脱离行为,然后搜集行为新闻和事件源对象的新闻,将这些新闻和行为交给addMouseListener()监听手段的参数MouseListener对象。

c、鼠标移动行为监听手段“addMouseMotionListener(MouseMotionListener l);”,监听事件源对象上是否有鼠标的移动和拖动行为,然后搜集行为新闻和事件源对象的新闻,将这些新闻和行为交给addMouseMotionListener()监听手段的参数MouseMotionListener对象。

3、事件接口:

a、行为事件接口“ActionListener”,它拿到新闻和行为后,把新闻和行为封装到它的事件处理手段ActionEvent参数对象中,接着就会调用事件处理手段,实走手段中的代码;

b、鼠标行为事件接口“MouseListener”,它拿到新闻和行为后,把新闻和行为封装到它的事件处理手段MouseEvent参数对象中,接着就会按照行为来决定调用差别的事件处理手段,实走手段的中的代码;

c、鼠标移动行为事件接口“MouseMotionListener”,它拿到新闻和行为后,把新闻和行为封装到它的事件处理手段MouseEvent参数对象中,接着就会按照行为来决定调用差别的事件处理手段,实走手段中的代码。

举例时间到:

1.现在的:点击登录界面上的登录按钮,就必要表现一个新窗体然后关闭登录窗体。

2.现在的:点击登录界面上的登录按钮,表现一个新窗体。

package L.counter;//包名public class man {//定义一个类/** * @param args */public static void main(String[] args) {//入口主函数// TODO Auto-generated method stubman l = new man();l.initUI();}public void initUI() {javax.swing.JFrame frame = new javax.swing.JFrame();//实例化一个窗体(顶级容器)frame.setTitle("一个相等有有趣的窗体");//实例化窗体的属性(名称)frame.setSize(300, 600);//竖立窗体大幼frame.setLocationRelativeTo(null);//竖立窗体的位置frame.setDefaultCloseOperation(3);//竖立关闭命令java.awt.FlowLayout fl = new java.awt.FlowLayout(java.awt.FlowLayout.CENTER);//先用辅助类组件确定组织手段(流体组织)frame.setLayout(fl);//增补组件至顶级窗体javax.swing.ImageIcon jpg = new javax.swing.ImageIcon("C:\\Users\\Administrator.PC-201703141017\\Desktop\\a.jpg");//增补图片前,先用辅助类组件javax.swing.JLabel labelImg = new javax.swing.JLabel(jpg);//实例化图片frame.add(labelImg);//增补元素组件javax.swing.JLabel labelName1 = new javax.swing.JLabel("账号:");//实例化元素组件(文字类)frame.add(labelName1);//增补组件javax.swing.JTextField textName = new javax.swing.JTextField();//实例化文本输入框textName.setPreferredSize(new java.awt.Dimension(200, 30));//竖立框的大幼frame.add(textName);//增补组件javax.swing.JLabel labelName2 = new javax.swing.JLabel("暗号:");//实例化文字frame.add(labelName2);//增补组件javax.swing.JPasswordField passwordName = new javax.swing.JPasswordField();//实例化暗号输入框passwordName.setPreferredSize(new java.awt.Dimension(200, 30));//竖立大幼,括号内采用封装组件(辅助类组件)frame.add(passwordName);//增补组件javax.swing.JButton button = new javax.swing.JButton("登录");//实例化按钮frame.add(button);//增补组件button.setPreferredSize(new java.awt.Dimension(65, 45));//竖立大幼,括号内采用封装组件(辅助类组件)frame.add(button);//增补组件frame.setVisible(true);//竖立窗体可见// 2.在man类的initUI手段中,实例化manListener事件处理类的对象,对象名ll。manListener ll = new manListener();//3.在man类的initUI手段中,给事件源对象button登录按钮,增补addActionListener()行为监听手段,然后给手段的参数对象竖立为ll。button.addActionListener(ll);//textName.addActionListener(ll);       ll.setman(frame);//将登录窗体传给ll对象中man属性}

package L.counter;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;public class manListener implements ActionListener {private JFrame Man;public void setman(JFrame l){Man = l;}public void actionPerformed(ActionEvent e) {// 1.1.在重写的手段中,实例化JFrame窗体对象,竖立窗体对象的属性值。JFrame drawFrame = new JFrame();drawFrame.setTitle("画图");drawFrame.setSize(700, 500);drawFrame.setDefaultCloseOperation(3);drawFrame.setLocationRelativeTo(null);// 竖立窗体相对于另一个组件的居中位置,参数null外示窗体是相对于屏幕的中央位置drawFrame.setVisible(true);//关闭登录窗体Man.dispose();}}

package L.counter;import java.awt.event.ActionListener;//import是引入类或包的关键字//引入类的迅速键Ctrl+Shift+O/** * 定义Paintings接口,该接口继承自ActionListener接口 *  *  *  */public interface Paintings extends ActionListener { // 定义常量String NAME = "吾";// 定义抽象手段void draw();}

package L.counter;import java.awt.event.ActionEvent;/** * 定义ShapeImpl类,该类实现(继承)Shape接口 *  * */public class PaintingsImpl extends man implements Paintings { /** * 实现(手段重写)Paintings接口中draw抽象手段 */public void draw() {//System.out.println(NAME + "在绘制图形!");}/** * 实现(手段重写)Paintings父接口ActionListener接口中的actionPerformed抽象手段 */public void actionPerformed(ActionEvent e) {}public static void main(String[] args) {Paintings p = new PaintingsImpl();p.draw();}}