`
枫子2011
  • 浏览: 3372 次
文章分类
社区版块
存档分类
最新评论

事件机制(实现QQ登陆界面的登陆功能)

    博客分类:
  • JAVA
 
阅读更多

目标:
 1.掌握接口和抽象类的格式
 2.熟练使用事件机制
 
1.接口的定义与实现
 定义接口的关键字是:interface
 格式:
 public interface 接口名 extends 接口名,... {
  //可以定义常量
  public static final 数据类型 常量名  = 值;
  
  //定义抽象方法
  public 返回值数据类型 方法名(数据类型 参数名,...);
 }
 注意:
 1.接口中默认的访问修饰符就是public。
 2.接口中常量名的每一个字母都必须要大写。(常量直接通过接口名进行调用:接口名.常量名)
 3.接口可以继承接口,而且可以同时继承多个接口
 4.接口是不能实例化对象的。
 
 实现接口的关键字是:implements
 格式:
 public class 类名 extends 类或者抽象类  implements 接口名,... {
  //类必须要实现(重写)接口中所有的抽下方法
 }
 类实现接口后有没有特殊的地方呢?
  1.接口也是一种类,只是比较特殊
  2.类实现(继承)接口后,那么类必须要实现接口中所有的抽象方法。
  3.类继承接口后,拥有类继承类的所有特性。

2.抽象类的定义与继承
 定义抽象类的关键字:abstract class
 格式:
 public abstract class 抽象类名 extends 类或者抽象类 implements 接口名,... {
  //类中可以定义的内容,抽象类都可以定义
  
  //接口中能定义的内容,抽象类还是可以定义。
  public abstract 返回值数据类型 方法名(数据类型 参数名,...);
  
 }

3.接口和类的区别
 

4.事件机制
 1.事件源
  你的动作发生在哪一个组件上,那么该组件就是事件源。
  只有图形界面类才可以成为事件源对象。
  
  jbuLogin
  
 2.事件监听器方法
  监听是否有相应的动作发生,如果发生相应的动作,事件监听器方法
  就会被激活,然后调用事件处理类的对象。
  事件源对象.add**Listener(**Listener l);
 
  jbuLogin.addActionListener(ActionListener al);
 
 3.事件处理类
  最终要执行什么样的内容
  自定义的类,去实现对应的事件接口
  
  LoginListener implements ActionListener {
   //实现接口的抽象方法
  }
   
5.练习
 1.实现QQ登录界面的登录功能

package lxf0630;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;

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.JPanel;
import javax.swing.JPasswordField;


//定义一个QQLogin类
public class QQLogin {
	
	// 定义程序的入口主函数
	
	public static void main(String[] args) {
		QQLogin qq = new QQLogin();
		qq.initGUI();
	}

	
	// 定义一个初始化界面的方法
	 
	public void initGUI(){
		//1.实例化一个JFrame类的对象
		JFrame jf = new JFrame();
		//2.设置jf对象的属性值
		jf.setTitle("QQ登录界面");
		jf.setSize(new Dimension(380,295));
		jf.setDefaultCloseOperation(3);
		jf.setLocationRelativeTo(null);//设置窗体显示在屏幕的中央
		jf.setResizable(false);//设置禁止调整窗体的大小
		
		//设置窗体的布局方式为边框布局,窗体默认的布局方式就是边框布局
		//jf.setLayout(new BorderLayout());
		
		/******************窗体背景*********************/
		//实例化一个图标对象
		ImageIcon backgroundImage = new ImageIcon("Images/dxy.jpg");
		//实例化一个标签对象,让标签显示图标对象
		JLabel backgroundJla = new JLabel(backgroundImage);
		//设置标签的起始位置和标签的大小
		backgroundJla.setBounds(0, 0, backgroundImage.getIconWidth(), backgroundImage.getIconHeight());
		
		//添加到窗体的LayeredPanel面板的最底层(第二层面板)
		jf.getLayeredPane().add(backgroundJla,new Integer(Integer.MIN_VALUE));
		
		//获取窗体的第一层面板
		JPanel contentPanel = (JPanel)jf.getContentPane();
		//设置第一层面板为透明
		contentPanel.setOpaque(false);
		
		/************************************************/
		
		
		/****************北边的面板*********************/
		JPanel northPanel = new JPanel();
		northPanel.setOpaque(false);//设置面板为透明
		northPanel.setPreferredSize(new Dimension(0,120));
		//设置面板的布局方式为边框布局,JPanel默认的布局方式是流式布局
		northPanel.setLayout(new BorderLayout());
		
		//实例化一个JLabel的对象,并且让标签上显示图标
		JLabel jla = new JLabel("");
		//jla.setFont(new Font("楷体",Font.BOLD,36));
		
		//将jla对象添加到northPanel对象上
		northPanel.add(jla,BorderLayout.WEST);
		//将northPanel添加到jf窗体的北边
		jf.add(northPanel,BorderLayout.NORTH);
		
		/**********************************************/
		
		/****************西边的面板*********************/
		JPanel westPanel = new JPanel();
		westPanel.setOpaque(false);//设置面板为透明
		//设置面板的布局方式为流式布局,JPanel默认的布局方式是流式布局
		westPanel.setLayout(new FlowLayout());
		
		//实例化一个图标(ImageIcon)对象
		ImageIcon image = new ImageIcon("Images/QQ图片.jpg");
		//实例化一个JLabel的对象,并且让标签上显示图标
		JLabel jlaImage = new JLabel(image);
		
		//将jlaImage对象添加到westPanel对象上
		westPanel.add(jlaImage);
		//将westPanel添加到jf窗体的西边
		jf.add(westPanel,BorderLayout.WEST);
		
		/**********************************************/
		

		/****************中间的面板*********************/
		JPanel centerPanel = new JPanel();
		centerPanel.setOpaque(false);//设置面板为透明
		//设置面板的布局方式为流式布局,靠左侧显示组件,JPanel默认的布局方式是流式布局
		centerPanel.setLayout(new FlowLayout(FlowLayout.LEFT,8,5));
		
		//实例化组件类的对象
		JComboBox jco = new JComboBox();
		//设置组件的大小
		jco.setPreferredSize(new Dimension(190,25));
		//设置jco对象可以编辑
	    jco.setEditable(true);
		jco.addItem("185002513");
		jco.addItem("24589663");
		jco.addItem("921546465");
		jco.setEditable(true);
		//将jco对象添加到centerPanel对象上
		centerPanel.add(jco);
		//String st2=jco.getToolTipText();
		JLabel jbuReg = new JLabel("注册账号");
		centerPanel.add(jbuReg);
		//JTextField jt=new JTextField(st2);
		 String s=(String)jco.getSelectedItem();
		 System.out.println(s);
		JPasswordField jpa = new JPasswordField();		
		//设置组件的大小
		jpa.setPreferredSize(new Dimension(190,25));		
		//将jpa对象添加到centerPanel对象上
		centerPanel.add(jpa);
	
		
		JLabel jbuPwd = new JLabel("找回密码");
		centerPanel.add(jbuPwd);
		
		JCheckBox jch1 = new JCheckBox("记住密码");
		jch1.setOpaque(false);
		JCheckBox jch2 = new JCheckBox("自动登录");
		jch2.setOpaque(false);
		centerPanel.add(jch1);
		centerPanel.add(jch2);
		
		//将centerPanel添加到jf窗体的中间
		jf.add(centerPanel,BorderLayout.CENTER);
		
		/**********************************************/
		

		/****************南边的面板*********************/
		JPanel southPanel = new JPanel();
		southPanel.setOpaque(false);//设置面板为透明
		//设置面板的布局方式为流式布局,JPanel默认的布局方式是流式布局
		southPanel.setLayout(new FlowLayout());
		
	
		//实例化一个LoginLestener类的对象
		LoginListener l=new LoginListener(jpa,jco);
		JButton jbuLogin = new JButton("登          录");
		jbuLogin.setPreferredSize(new Dimension(155,30));
		//jbuLogin.setFont(new Font("楷体",Font.BOLD,36));
	
		//给事件源对象添加动作监听器方法,绑定事件处理类的对象
		jbuLogin.addActionListener(l);
		
	
		//将jbuLogin对象添加到southPanel对象上
		southPanel.add(jbuLogin);
		//将southPanel添加到jf窗体的南边
		jf.add(southPanel,BorderLayout.SOUTH);
		
		
		/**********************************************/
		
		//设置窗体为可见的代码一定要放置在最后一行
		jf.setVisible(true);
	}	
	
}

 

package lxf0630;


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

import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;


//定义一个事件处理类,该类实现了ActionListener接口
public class LoginListener implements ActionListener{
	 private JPasswordField jpa;
	 private JComboBox jco;
	//定义一个构造方法将JPasswordField jpa和JComboBox jco传到事件处理类中
	public LoginListener(JPasswordField jpa,JComboBox jco) {
		this.jpa = jpa;
		this.jco = jco;
		
	}
	
	//重写接口中的抽象方法
	 
	public void actionPerformed(ActionEvent e) {
		System.out.println("你点击了"+e.getActionCommand()+"按钮");
		
		//System.out.println(jpa.getText());
		String str = e.getActionCommand();
		//获取账号和密码
		//String name=jpa.getText();
		String act = (String) jco.getSelectedItem();
		String pwd = jpa.getText();
		
		if (act.equals("185002513")&&pwd.equals("123456")){
			JFrame jf = new JFrame("欢迎使用QQ");
			jf.setSize(600, 337);
			jf.setLocationRelativeTo(null);//设置窗体显示在屏幕的中央
			jf.setResizable(false);//设置禁止调整窗体的大小
			jf.setDefaultCloseOperation(3);
			jf.setVisible(true);
			//实例化一个JLabel的对象
			ImageIcon imge1 = new ImageIcon("images/dxy2.jpg");
			JLabel jla1 =new JLabel(imge1);		
			jf.add(jla1);
			}
			else {
			JOptionPane.showMessageDialog(null,
					"你输入的账号错误,请重新输入!");
			}
		}
	}


 
 

分享到:
评论

相关推荐

    [精仿]QQ2013局域网通讯(10.30更新版-带最新版界面库)

    5.登录主界面后,有登陆提示窗,提示上次登录的城市和时间。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部...

    QQ局域通讯版源码

    5.登录主界面后,有登陆提示弹窗。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:如真QQ一般,上下左右...

    高仿QQ2013

    5.登录主界面后,有登陆提示弹窗。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:如真QQ一般,上下左右...

    仿QQ2013源码

    5.登录主界面后,有登陆提示弹窗。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:如真QQ一般,上下左右...

    高仿QQ2013源码

    5.登录主界面后,有登陆提示弹窗。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:如真QQ一般,上下左右...

    高仿QQ2013局域通讯版源码20130502

    5.登录主界面后,有登陆提示弹窗。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:如真QQ一般,上下左右...

    精仿QQ2013局域通讯(7.5更新版)

    5.登录主界面后,有登陆提示窗,提示上次登录的城市和时间。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部...

    毕业设计源码 文档:基于Android的音乐播放器.rar

    同时登录后还有分享到微信,qq,微博的功能,以及根据储存路径删除音乐文件和根据id删除mediastore的歌曲记录。登陆注册是一个自定义的alertdialog弹出框,写入sqlitedatabase进行验证判断。  通过这个音乐播放器的...

    vc++ 应用源码包_2

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

    vc++ 应用源码包_6

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

    vc++ 应用源码包_1

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

    vc++ 应用源码包_5

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

    vc++ 应用源码包_3

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

    java源码包2

    第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...

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

    局域网仿Q聊天工具主要包括如下功能模块: (1)用户登录: (2)用户个人聊天界面:界面美观、界面简捷、操作方便 (3)服务器管理: 1.3 约束条件 主要有如下的约束条件: 1、面向对象: 2、界面 界面简捷、操作...

    vc++ 开发实例源码包

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

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

    第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...

    java源码包3

    第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...

    java源码包4

    第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的...

    ShopNC多用户商城 V2.0 GBK.rar

    五、QQ登陆: 留住买家、方便买家是平台增长的核心价值之一,QQ登录为平台注入新活力,降低会员流失的可能性,方便QQ用户直接登录。 六、广告管理: 广告是互联网赢利手段永恒不变的王者,商城系统增强了广告管理...

Global site tag (gtag.js) - Google Analytics