`
空城旧梦why
  • 浏览: 25360 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Java事件的监听机制

    博客分类:
  • Java
 
阅读更多

在Java中实现事件的监听,是通过实现监听接口然后添加监听器来实现的,这里就牵扯到了接口的概念。接口何为接口,其实就是Java中类的一个分支,是一种特殊的类。在接口定义的全都是抽象方法以及一些常量。

 

接口:

一、 接口的定义

1、接口的定义关键字是interface

                  2、定义的方式是:访问修饰符(访问修饰符只能是public或者是默认的) + interface + 接口名 {                                     接口内部的抽象方法以及常量 }。

 3、接口可以继承接口(这里的继承是多继承)但是不能实现接口。

 4、在接口中的定义的抽象方法只能是public abstract的。

 5、在接口中可以定义静态常量也可以定义非静态常量。

        二、接口的实现

                  1、实现接口的关键字是implements,一个类可以实现多个接口,但是在实现接口的时候必须重                                        写这个接口中所有的抽象方法(包括这个接口的父接口中所有的抽象方法)。

                  2、接口与它的实现类是一种继承的关系。

        三、虽然Java中不支持多继承,但是通过接口这一机制变相的实现了多继承。

 

抽象类:

          定义方式:

         访问修饰符 + abstract class + 抽象类名 + {

                              /**可以定义属性,普通方法,构造方法,抽象方法(必须要加abstract关键字),常量

                                 如果是抽象方法那么就不能写方法体

                   */

          }

   

事件的监听:

           一、首先得确定事件源,所谓的事件源其实就是事件发生在谁的身上那么它就是事件源。(所有的swing和awt界面组件都可以成为事件源)。

           二、事件的监听方法是通过给事件源添加事件处理类来实现事件的监听

                    addActionListener(ActionListener l);(鼠标单击(按钮,标签),回车操作(输入框))

                    addMouseListener(MouseListener l);(鼠标按下,释放,单击,进入,离开)

           addMouseMotionListener(MouseMotionListener l);     鼠标移动和拖动

           addKeyListener(KeyListener l);            键盘按下和释放。

 

              三、事件处理类对象时通过定义类实现对应的接口,实现接口中的抽象方法来实现

   

    下面是我写一个小登陆的程序来练习事件监听机制

package com.why.ui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;

public class QQLogin extends JFrame {

	private static final long serialVersionUID = 1L;
	private JButton login;
	private JComboBox<String> username;
	private JPasswordField password;

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		QQLogin login = new QQLogin();
		login.init();
	}

	public void init() {
		// 设置窗体大小
		this.setSize(new Dimension(385, 300));
		
		// 设置窗体为不可调整大小的状态
		this.setResizable(false);
		
		// 设置窗体的布局
		this.setLayout(new BorderLayout());
		
		// 设置窗体的显示位置
		this.setLocationRelativeTo(null);
		
		// 设置船体的标题
		this.setTitle("QQ");
		
		// 设置窗体的关闭按钮点击后的响应方式
		this.setDefaultCloseOperation(3);
		
		//为了设置背景图片并且显示出来不被遮住所以不得不设置JFrame的内容窗格设置为透明
		((JPanel) this.getContentPane()).setOpaque(false);
		//实例化JLabel对象用于显示背景图片
		ImageIcon bg = new ImageIcon("res/bg.jpg");
		JLabel label = new JLabel(bg);
		
		//添加背景图片标签
		this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
		//设置背景标签的位置
		label.setBounds(0, 0, 382, 275);

		// 调用显示北边的方法,用于初始化北边要显示的组件
		createNorth();

		// 调用显示南边的方法,用于初始化北边要显示的组件
		createSouth();

		// 调用显示西边的方法,用于初始化北边要显示的组件
		createWest();

		// 调用显示中间的方法,用于初始化北边要显示的组件
		createCenter();

		// 设置窗体为可见状态
		this.setVisible(true);
	}

	// 定义初始化北边的方法,对北边的组件初始化
	private void createNorth() {
		//添加这个标签不让中间的组件跑到最上面来
		JLabel label = new JLabel();
		label.setPreferredSize(new Dimension(378, 120));
		label.setOpaque(false);
		this.add(label, BorderLayout.NORTH);
	}

	// 定义初始化南边的方法,对南边的组件初始化
	private void createSouth() {
		JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
		panel.setOpaque(false);
		// 添加多账号登陆图片
		ImageIcon icon = new ImageIcon("res/a.jpg");
		JLabel labelM = new JLabel(icon);
		panel.add(labelM);

		//因为使用的是流式布局所以添加的组件必定会挨在一起所以添加这个以达到不让组件挨着的目的
		JLabel jl1 = new JLabel();
		jl1.setPreferredSize(new Dimension(65, 30));
		panel.add(jl1);

		// 添加登陆按钮
		login = new JButton("登         陆");
		login.addActionListener(new ButtonListener());
		login.setPreferredSize(new Dimension(156, 35));
		panel.add(login);

		//因为使用的是流式布局所以添加的组件必定会挨在一起所以添加这个以达到不让组件挨着的目的
		JLabel jl2 = new JLabel();
		jl2.setPreferredSize(new Dimension(55, 30));
		panel.add(jl2);

		// 添加二维码登陆图片
		ImageIcon image = new ImageIcon("res/b.jpg");
		JLabel label = new JLabel(image);
		panel.add(label);

		this.add(panel, BorderLayout.SOUTH);
	}

	// 定义初始化西边的方法,对西边的组件初始化
	private void createWest() {
		// 实例化一个JPanel容器用于放置头像图片
		JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
		panel.setOpaque(false);

		// 实例化一个ImageIcon对象用于实例化一个JLabel对象放置头像图片
		ImageIcon icon = new ImageIcon("res/head.jpg");
		JLabel label = new JLabel(icon);
		panel.add(label);

		// 设置panel的大小
		panel.setPreferredSize(new Dimension(100, 0));

		this.add(panel, BorderLayout.WEST);
	}

	// 定义初始化中间的方法,对中间的组件初始化
	private void createCenter() {
		// 实例化一个JPanel容器用于放置中间要显示的元素组件
		JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 5));
		panel.setOpaque(false);

		// 定义JChomboBox所需的下拉列表的内容
		String[] name = new String[] { "1378681713", "1238921432", "3382953294", "4853243489" };
		username = new JComboBox<String>(name);

		// 设置用户名输入框的大小
		username.setPreferredSize(new Dimension(187, 25));

		// 设置JComboBox为可编辑状态
		username.setEditable(true);
		panel.add(username);

		// 添加注册密码文本
		JLabel labelReg = new JLabel("注册账号");
		//设置文字的颜色
		labelReg.setForeground(Color.BLUE);
		panel.add(labelReg);

		// 添加密码输入框
		password = new JPasswordField();
		password.setPreferredSize(new Dimension(187, 25));
		panel.add(password);

		// 添加找回密码文本
		JLabel labelFindpwd = new JLabel("找回密码");
		//设置文字的颜色
		labelFindpwd.setForeground(Color.BLUE);
		panel.add(labelFindpwd);

		// 添加记住密码复选框
		JCheckBox remPwd = new JCheckBox("记住密码");
		//设置文字的颜色
		remPwd.setForeground(Color.BLUE);
		//设置该组件透明不让其遮住背景图片
		remPwd.setOpaque(false);
		panel.add(remPwd);

		// 添加自动登陆复选框
		JCheckBox autoLogin = new JCheckBox("自动登陆");
		//设置文字的颜色
		autoLogin.setForeground(Color.BLUE);
		//设置该组件透明不让其遮住背景图片
		autoLogin.setOpaque(false);
		panel.add(autoLogin);

		this.add(panel, BorderLayout.CENTER);
	}

	private class ButtonListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub
			String name = (String) username.getSelectedItem();
			String pwd = new String(password.getPassword());
			if(pwd.equals("admin") && name.equals("admin")) {
				JOptionPane.showMessageDialog(null, "登陆成功");
			} else {
				JOptionPane.showMessageDialog(null, "账号或者密码错误");
			}
		}
	}

}

  • 大小: 139.9 KB
3
1
分享到:
评论
2 楼 p_MISS 2014-04-10  
我以为也是呢
1 楼 bitray 2014-04-10  
误会了,以为讲的是怎么实现监听呢

相关推荐

    java事件监听机制.doc

    java事件监听机制 java中的事件机制的参与者有3种角色: .event object:就是事件产生时具体的“事件”,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中

    Java事件处理机制-事件监听器的四种实现方式.docx

    super("Java 事件监听机制"); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn = new JButton("点击"); btn.addActionListener(this); getContentPane().add(btn); ...

    JAVA事件监听器的四种实现方式

    JAVA事件监听器是JAVA语言中的一种机制,它允许程序员在特定的事件发生时执行某些操作。事件监听器的实现方式有多种,本篇文章将介绍四种常见的事件监听器实现方式:自身类作为事件监听器、外部类作为事件监听器、...

    Java事件处理机制- 事件监听器的四种实现方式

    本文将详细解析Java事件处理机制中事件监听器的四种实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器以及内部类作为事件监听器。 1. **自身类作为事件监听器** 在自身类作为事件...

    JAVA事件处理机制

    总的来说,Java事件处理机制是构建交互式应用程序的关键,它通过事件源、事件和监听器的协作,实现了对用户行为的响应。事件监听器适配器进一步简化了这一过程,让开发者可以更加专注地处理应用程序的核心逻辑。理解...

    java自定义事件监听

    首先,我们需要理解Java AWT(Abstract Window Toolkit)和Swing库中的基础事件监听机制。这两个库提供了许多内置的事件类和监听器接口,如ActionListener用于处理按钮点击,MouseListener和MouseMotionListener用于...

    Java监听键盘鼠标全局事件[定义].pdf

    Java监听键盘事件可以通过使用Windows Hook机制来实现。通过设置键盘Hook,可以捕捉键盘按键事件,并将其传递给Java应用程序。Java应用程序可以通过JNI调用native方法来处理键盘事件。 四、Java监听鼠标事件 Java...

    Java事件处理机制教学方法探讨.pdf

    在Java编程语言中,事件处理机制是构建图形用户界面(GUI)交互功能的核心技术。理解这一机制对于编程人员而言至关重要,因为它涉及到程序如何响应用户的操作。为了让初学者更好理解Java事件处理机制及其编程技术,黄...

    java事件处理机制ppt

    这样的事件处理机制使得Java GUI程序具有良好的可扩展性和灵活性,可以根据需要添加或移除监听器,以应对不同的用户交互需求。通过学习和掌握Java事件处理机制,开发者可以创建更富交互性的应用程序,提升用户体验。

    java中监听机制,以及观察者设计模式

    在Java中,监听机制主要用于事件驱动编程,例如用户界面(UI)组件的交互。当一个对象的状态发生变化时,它会通知已经注册的监听器,这些监听器可以响应并采取相应的操作。例如,当你点击一个按钮时,按钮的点击事件...

    JAVA事件处理机制.ppt

    Java事件处理机制是Java开发GUI(图形用户界面)应用程序时不可或缺的部分,它使得程序能够响应用户的操作,如点击按钮、选择菜单项等。在Java中,事件处理主要涉及以下几个核心概念: 1. **事件(Event)**:事件...

    java事件处理机制Demo

    Java事件处理机制是Java编程中一个重要的组成部分,它主要用于实现用户界面(UI)与应用程序逻辑之间的交互。在Java中,事件处理主要涉及到事件源、事件和事件监听器。本示例"java事件处理机制Demo"将深入探讨Java的...

    java事件处理机制

    Java事件处理机制是Java GUI编程中的重要组成部分,它允许用户与图形界面进行交互。在Java中,事件处理涉及事件源(Event Source)、事件(Event)和事件监听器(Event Listener)。当用户执行某个操作,如点击按钮...

    java 旋转中的风扇

    Java 事件监听机制是 Java language 中的一种机制,用于处理用户界面事件。Java 事件监听机制使用 Observer 模式来实现,观察者(Observer)对象注册到被观察者(Observable)对象上,当被观察者对象发生变化时,...

    深入探索Spring事件监听机制:技术与应用

    总之,理解并掌握Spring的事件监听机制对于任何Java开发者来说都是至关重要的,它能够帮助我们更好地利用Spring框架来构建模块化、可维护的系统。通过创建和处理自定义事件,我们可以实现更灵活的业务逻辑,提高代码...

    java事件处理机制详解

    总结来说,Java事件处理机制通过事件对象、事件源和事件监听器的协作,实现了组件间的通信和事件响应。开发者可以通过自定义事件和监听器来扩展这一机制,以适应各种复杂的交互需求。理解和掌握这一机制,对于编写...

    JAVA USB监听器

    【JAVA USB监听器】是一种基于Java编程语言实现的软件...这个工具的实现涉及到多个Java核心技术,包括IO流、多线程、事件监听以及系统级的硬件交互,对于Java开发者来说,理解和掌握这些技术是提升自身技能的重要步骤。

    JAVA监听机制实现一个小球的运动

    JAVA监听机制实现一个小球的运动

    Java事件机制例子

    Java事件机制基于观察者模式,其中事件源(如按钮)会发布事件,而事件监听器则订阅这些事件并执行相应的操作。 事件、事件监听器和事件源是Java事件处理的三个核心概念。事件是用户或系统发生的某种情况,如鼠标...

Global site tag (gtag.js) - Google Analytics