QQ登录界面模仿和事件监听(上)

标题是QQ登录界面模仿和事件监听,不过我们要先从时间监听讲起。

这两块内有一定的相关性,加在一起太长,所以我分成(上)(下)两部分。

另,这次的QQ界面算做完基本的程度,QQ登录界面模仿与事件监听的应用(上),不过还有有待美化的地方,所以呢,敬请期待下次的完善版本,^ ^

OK,先来讲事件监听器。
啥是事件监听器?相信你已经了解了,要是忘记了基本概念先自行做个基本了解哦。

addActionListener(ActionListener);
addMouseListener(MouseListneer);
addMouseMOtionListener(MouseMOtionListener);
addKeyListener(KeyListener);
这四个监听器方法对应的事件接口分别是
ActionListener
MouseListner
MouseMotionListener
KeyListener
这四个方法都很好记,顾名思义,分别是对按钮等组件,鼠标,键盘动作的事件方法。

整个事件发生的过程和产生调用行为的过程是这样子滴:
事件源发生动作--->监听器方法监听到--->实现你监听器里写的方法。

但是,与类不同,事件接口不能直接实例化,只能新建一个类实现这个接口,将这个类实例化,再调用这个类的监听方法。

实现接口的关键字是implements。

比如说?
比如说,我这个YOYOYO无任何修饰的登录界面程序。上面是输入框,下面是Password框,让它在被输入了我指定的值后点“YOYOYO”这个按钮,有所反应。

[img]http://dl2.iteye.com/upload/attachment/0099/3958/d98e06c6-3d35-374f-b764-e8cc3419f38d.png[/img]

我这里指定的是上面的文本框输入yoyoyo,下面的密码框输入的是hehehe时在文本框中显示“输入正确”,否则输出密码不匹配。

所以监听器里的方法是这样的:


public void actionPerformed(ActionEvent e){
//去除输入框输入的字符串给s
String s=jtb1.getText();
String s1=jpw1.getText();
//比较s的值是否和yoyoyo一样
if (s.equals("yoyoyo")&&s1.equals("hehehe")){
jtb1.setText("输入正确");
}
else{
jtb1.setText("密码不匹配");
}
}


你肯定注意到这里用了jtb1文本框和jpw1密码框这两个组件。它们是在继承addListener接口的一个类里的,要让这两个组件调取出的值,跟main主函数所在的类里定义的jtb文本框和jpw密码框的值相同,那么就需要用构造方法来传参啦。传参前也要首先声明jtb1和jpw1的类型。
如下:


//指向界面上的输入框对象
private JTextField jtb1;
private JPasswordField jpw1;
//定义一个setText方法,传入jtb这个对象
public void setText(JTextField jtb,JPasswordField jpw){
jtb1=jtb;
jpw1=jpw;
}


运行结果是这样的:


[img]http://dl2.iteye.com/upload/attachment/0099/3960/39a80839-a45e-3428-8bd0-01540ad94b7c.png[/img]


[img]http://dl2.iteye.com/upload/attachment/0099/3962/d4946df8-8163-3204-a57b-70f05cba7d42.png[/img]

下面贴出全部代码:

import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;


public class YOFrame extends JFrame{

public static void main(String args[]){
YOFrame YO=new YOFrame();
YO.UI();

}
//设置初始界面的外形组件
public void UI(){
this.setTitle("YOYOYO");
this.setSize(200,200);
this.setLayout(new FlowLayout(FlowLayout.LEFT));
this.setDefaultCloseOperation(3);//关闭窗体时,退出程序
//给按钮添加监听器
JButton jbu=new JButton("YOYOYO");
YOInterface YOinter=new YOInterface();
jbu.addActionListener(YOinter);

JTextField jtb=new JTextField();
jtb.setPreferredSize(new Dimension(100,30));
//YOinter调用setText方法
JPasswordField jpw=new JPasswordField();
jpw.setPreferredSize(new Dimension(100,30));
YOinter.setText(jtb,jpw);
//将jbu,jtb控件加到界面上
this.add(jbu);
this.add(jtb);
this.add(jpw);
this.setVisible(true);


}
}



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

import javax.swing.JFrame;
import javax.swing.JPasswordField;
import javax.swing.JTextField;


public class YOInterface implements ActionListener{
//指向界面上的输入框对象
private JTextField jtb1;
private JPasswordField jpw1;
//定义一个setText方法,传入jtb这个对象
public void setText(JTextField jtb,JPasswordField jpw){
jtb1=jtb;
jpw1=jpw;
}
public void actionPerformed(ActionEvent e){
//去除输入框输入的字符串给s
String s=jtb1.getText();
String s1=jpw1.getText();

//比较s的值是否和yoyoyo一样
if (s.equals("yoyoyo")&&s1.equals("hehehe")){
jtb1.setText("输入正确");
}
else{
jtb1.setText("密码不匹配");
}
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值