`
打酱油的小瓶子
  • 浏览: 8096 次
最近访客 更多访客>>
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  
好厉害

相关推荐

Global site tag (gtag.js) - Google Analytics