`
打酱油的小瓶子
  • 浏览: 8138 次
最近访客 更多访客>>
lso
社区版块
存档分类

事件机制-QQ登陆界面简单实现

    博客分类:
  • java
阅读更多

        说到事件机制,就不能不提接口,然何为接口呢?接口实际上也是一种类,只是与一般的类有所不同。接口的关键字是interface,格式为:public interface 接口名 extends 接口,…{}
       接口中有常量和抽象方法,常量的命名规则是每一个字母都要大写,可是我们常常忽略了这个规则,因为java没有严格要求要大写,小写时也不会报错,但是建议最好还是大写。格式有三种:
 1).public static final 数据类型 常量名 = 值;
 2).static final 数据类型 常量名 = 值;
 3).数据类型 常量名 = 值;
        抽象方法,没有具体的实现体,连空的{}也是不可以带的。它的定义格式也是有三种的:
 1).public abstract 返回值数据类型  方法名(数据类型 形参,...);
 2).abstract 返回值数据类型  方法名(数据类型 形参,...);
 3).返回值数据类型  方法名(数据类型 形参,...);
        接口的作用是可以让类实现多继承,它的实现关键字是implements,格式为:public class 类名  extends 类或者抽象类  implements 接口,…{}
类在实现接口时必须要实现接口中所有的抽象方法。
       抽象类又与接口和一般的类不同,类可以实例化对象而抽象类不行,但是抽象类可以定义类中所有的属性和方法,还可以定义接口中的常量和抽象方法,它是介于接口和类之间的一种特殊类。它的定义格式:
public abstract class 抽象类名 extends 类或者抽象类 implements 接口,…{}
       现实生活中有许许多多的事件,在java中则有事件机制来表示整个事件。事件机制由三个方面组成:事件源、事件监听器方法、时间处理类。
       事件源:很多人在事件源的理解上有所误解,容易被表象所迷惑,实际上,时间源只能是图形界面组件对象。它是根据你的动作来确定,动作发生在哪一个组件上,那么该组件就是事件源对象。例如:对方来电时,手机界面上有两个按钮,接起或者挂断。当你选择接起时,则接起按钮为事件源;当你选择挂断时,则挂断按钮为事件源。
       比较常用的事件监听器方法有:addActionListener(ActionListener l);  动作监听器方法;addMouseListener(MouseListener l);鼠标监听器方法;addMouseMotionListener(MouseMotionListener l);鼠标移动监听器方法;
addKeyListener(KeyListener l); 键盘监听器方法。
       事件处理类:前面所提到的常见监听器方法类所对应的事件接口:ActionListener、MouseListener、MouseMotionListener、KeyListener。

相关练习:QQ登陆界面的简单实现:

以下是QQ登陆界面

/**
 * 定义一个QQ类,用来实现一个简单的QQ登陆界面
 */

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class QQ {
	//程序的入口主函数
	public static void main(String[] args) {
		QQ qq=new QQ();//实例化一个QQ类对象
	    qq.showFrame();//用所创建的QQ类对象调用初始化界面showFrame方法
	}
	
	//初始化界面方法
	public void showFrame(){
		//实例化一个JFrame类对象
		JFrame frame=new JFrame();
		//设置窗体属性值
		frame.setTitle("QQ");//设置标题
		frame.setSize(400,320);//设置窗体大小
		frame.setLocationRelativeTo(null);//设置窗体显示在正中央
		frame.setResizable(false);// 设置禁止改变窗体大小
		frame.setLayout(null);//设置绝对布局		
		
		//实例化一个ImageIcon对象
		ImageIcon icon = new ImageIcon("images/007.gif");
		//实例化一个标签对象,并让其显示为背景图片
        JLabel imageLabel = new JLabel(icon);
        //设置标签大小
		imageLabel.setBounds(0, 0, icon.getIconWidth(),icon.getIconHeight());
		//将标签添加到窗体的JLayeredPane面板上
		frame.getLayeredPane().add(imageLabel, new Integer(Integer.MIN_VALUE));
		//设置ContentPanel面板透明
		JPanel jp = (JPanel)frame.getContentPane();
		jp.setOpaque(false);
		
		
		//设置一个文本输入框对象,并设置其大小,将其添加到窗体对象上
		JTextField cmb=new JTextField();
		cmb.setBounds(125,150,180,25);
		frame.add(cmb);
		//设置一个标签对象,并设置其大小,将其添加到窗体对象上
		JLabel jb1=new JLabel("注册账号");
		jb1.setBounds(310,150,80,25);
		frame.add(jb1);
		//设置一个文本输入框对象,并设置其大小,将其添加到窗体对象上
		JTextField pwf=new JTextField();
		frame.add(pwf);
		pwf.setBounds(125,180,180,25);
		//设置一个标签对象,并设置其大小,将其添加到窗体对象上
		JLabel jb2=new JLabel("忘记密码");
		jb2.setBounds(310,180,80,25);
		frame.add(jb2);
		
		//实例化一个复选框对象,设置其大小并将其添加到窗体对象上
		JCheckBox ckb1=new JCheckBox("记住密码");
		ckb1.setBounds(120,205,80,30);
		frame.add(ckb1);
		//实例化一个复选框对象,设置其大小并将其添加到窗体对象上
		JCheckBox ckb2=new JCheckBox("自动登陆");
		ckb2.setBounds(200,205,80,30);
		frame.add(ckb2);
		//设置一个登陆按钮
		JButton btn=new JButton("登陆");
		frame.add(btn);
		btn.setBounds(125,245,150,30);
		//btn.setJButton();
		
		
		ImageIcon image = new ImageIcon("images/我的头像.GIF");
		//实例化一个JLabel对象,并让其显示为图片
		JLabel loginShoto = new JLabel(image);
		loginShoto.setBounds(25,147,image.getIconWidth(),image.getIconHeight());
		frame.add(loginShoto);
		//设置窗体关闭时结束程序
		frame.setDefaultCloseOperation(3);
		
		//实例化事件处理类的对象
		LoginListener al = new LoginListener(frame,cmb,pwf);
		
		
		//找到事件源jbuLogin
		//给事件源添加动作监听器方法   给监听器方法添加事件处理类对象。
		btn.addActionListener(al);
		
		//设置窗体可见
	    frame.setVisible(true);
	}
	
}

 

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

/**
 * 3.定义一个事件处理类LoginListener,该类要实现ActionListener接口
 */
public class QQListener implements ActionListener {
	
	//扩大参数的访问范围
	private JTextField cmb, pwf;
	private JFrame frame;
	
	/**
	 * 构造方法,接受账号和密码输入框对象
	 */
	public QQListener(JFrame frame,JTextField cmb,JTextField pwf){
		this.cmb = cmb;
		this.pwf = pwf;
		this.frame = frame;
	}
	
	/**
	 * 4.实现事件处理方法。
	 */
	public void actionPerformed(ActionEvent e) {
		//System.out.println("你点击了"+e.getActionCommand()+"按钮!");
		//获取输入的账号和密码
		String name = cmb.getText();
		String pwd = pwf.getText();
		
		//判断输入账号和密码是否是admin
		if(name.equals("admin") && pwd.equals("admin")){

			// 实例化一个JFrame类的对象
			JFrame jf = new JFrame();
			// 设置窗体的属性值
			jf.setTitle("登陆成功界面");// 设置标题
			jf.setSize(300, 600);// 设置大小
			jf.setLocationRelativeTo(null);// 设置窗体显示在屏幕中央
			//jf.setResizable(false);// 设置禁止改变窗体大小
			jf.setDefaultCloseOperation(3);// 设置窗体关闭时退出程序
			jf.setVisible(true);//设置窗体可见
			frame.dispose();//登录窗口关闭
		}else{
			//弹出一个消息提示框
			JOptionPane.showMessageDialog(frame, "你输入账号和密码错误,请重新输入!");
		}
	}

}

 

 输入账号密码登陆:



 登陆成功界面:



 输入账号和密码:




 
 

  • 大小: 100.3 KB
  • 大小: 95.2 KB
  • 大小: 95.2 KB
  • 大小: 74.7 KB
  • 大小: 4.7 KB
分享到:
评论
1 楼 再_见孙悟空 2013-12-11  
好厉害

相关推荐

    超炫的宁德社区论坛模板蓝色风格套装

    使用DZX特有的DIY数据调用功能实现内容的所有调用,设置简单容易上手; 3. 数据调用采用DZX默认缓存机制,不会增加社区负荷, 打开速度不受影响; 4. 所有调用图片自动生成缩略图功能, 有效解决调用图片变形失真的...

    vc++ 开发实例源码包

    [3]---事件选择 - WSAEventSelect [4]---重叠I [5]---完成端口 IP所在地查询器 如题。 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈推荐。 自绘...

    vc++ 应用源码包_2

    实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...

    vc++ 应用源码包_6

    实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...

    java源码包---java 源码 大量 实例

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码...

    vc++ 应用源码包_1

    实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...

    vc++ 应用源码包_5

    实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...

    vc++ 应用源码包_3

    实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...

    asp.net知识库

    .NET的插件机制的简单实现 我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在...

    JAVA上百实例源码以及开源项目源代码

    然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在...

    java源码包2

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源...

    JAVA上百实例源码以及开源项目

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码...

    java源码包3

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源...

    java源码包4

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源...

    网优宝企业网站管理系统(基于seo技术一站式优化)

    本功能采用IO文件流技术,实现在线对文件的修改,编辑功能,图片的预览,无需登陆FTP下载文件,即可实现修改。 四、 支持多风格界面与展现形式的相互切换,只要修改css文件即实现对模板的修改。 a) 网站内置多套...

    局域网聊天工具需求分析.doc

    第1章 引言 1.1 目标与功能 ... (1)用户登录: (2)用户个人聊天界面:界面美观、界面简捷、操作方便 (3)服务器管理: 1.3 约束条件 主要有如下的约束条件: 1、面向对象: 2、界面 界面简捷、操作简单,提示

    记事狗微博系统 v3.0.0 beta GBK Build 20110916.rar

    记事狗微博源码 V3.0.0beta Build20110916 记事狗微博系统V3.0版本兼有轻博的多图和长文功能、SNS的导航架构优势、BBS的推荐和置顶特点,让发布更简单、查看更方便、互动更便捷,新版还内置API体系和插件机制,让...

Global site tag (gtag.js) - Google Analytics