读书人

事件机制-QQ登陆界面容易实现

发布时间: 2013-12-09 09:45:50 作者: rapoo

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

??????? 说到事件机制,就不能不提接口,然何为接口呢?接口实际上也是一种类,只是与一般的类有所不同。接口的关键字是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类,用来实现一个简单的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();//判断输入账号和密码是否是adminif(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, "你输入账号和密码错误,请重新输入!");}}}

?
事件机制-QQ登陆界面容易实现
?输入账号密码登陆:


事件机制-QQ登陆界面容易实现
?登陆成功界面:


事件机制-QQ登陆界面容易实现
?输入账号和密码:


事件机制-QQ登陆界面容易实现


事件机制-QQ登陆界面容易实现
?
?

读书人网 >编程

热点推荐