事件机制

接口:
1.接口的定义
关键字:interface
格式:
public interface 接口名 extends 接口名,...{
//常量
public static final 数据类型 常量名称=值;
//抽象方法
public 返回值数据类型 方法名(数据类型 参数名,...);
}
访问修饰符只有public
public和static可以不写
接口不能继承类,只能继承接口

2.接口的实现
关键字:implements
格式:
public class 类名 extends 类名 implements 接口名,...{
//必须实现接口中的所有抽象方法
}
要实现接口里的所有抽象方法。
类实现接口,实际上是继承关系。类继承类有什么特性,完全一致。
这个类可以先继承类,再实现接口。反之不行。
类只能有一个直接父类,一个接口可以继承多个父类。
接口的作用:丰富类的继承。

3.抽象类的定义与实现
定义抽象类的关键字:abstract class
public abstract class 抽象类名{
//定义类中的所有属性和方法
//定义接口中的常量和抽象方法
public abstract 返回值数据类型 方法名(数据类型 参数名,...);
}
public class 类名或者抽象类 extends 抽象类名 implements 接口名,...{
}
注意:如果类去继承抽象类,那么类必须要实现所有的抽象方法。

抽象类是类和接口的整合,可以定义类和接口的所有内容。
定义常量和抽象方法,多一个abstract。

4.事件机制
1.事件源
确定只有JAVA的图形界面类才能成为事件源。
格式:只要点击动作发生在图形界面对象上,那么该图形界面对象就是事件源。

2.事件监听器方法
让事件源可以随时的监听对象的操作。
格式:事件源对象.add**Listener(**Listener 1);
3.事件处理类对象
事件处理类,事件要执行的最终代码。
public class 类名 implements **Listener{
//重写事件接口中的抽象方法
}
5.练习
实现QQ的登录功能:
[code="java"][/code]
package exe;

import javax.swing.*;

import java.awt.*;//可以直接写
import java.awt.event.ActionListener;

//import exe.LoginListener;

public class Login {

public void show(){
JFrame frame = new JFrame();

frame.setTitle("企鹅君");


//北边的面板
JPanel panel01 = new JPanel();
panel01.setPreferredSize(new Dimension(400,150));
frame.add(panel01,BorderLayout.NORTH);
//panel01.setPreferredSize(new Dimension(100,100));
ImageIcon image01 = new ImageIcon("images/02.jpg");//加入图片
JLabel label03 = new JLabel(image01);
panel01.add(label03);

//南边的面板
JPanel panel02 = new JPanel();
//登录按钮
JButton but = new JButton("登录");
but.setPreferredSize(new Dimension(100,30));
panel02.add(but);
frame.add(panel02,BorderLayout.SOUTH);

//LoginListener listener1=new LoginListener but;

//实例化一个LoginListener类的对象
LoginListener listener1 = new LoginListener(false);

//给事件源对象添加动作监听器方法
but.addActionListener(listener1);

//西边的面板
JPanel panel03 = new JPanel();
panel03.setPreferredSize(new Dimension(100,100));
ImageIcon image = new ImageIcon("images/01.jpg");//加入图片
JLabel label = new JLabel(image);
// label.setOpaque(false);
// label.setBackground(Color.red);//设为单色
panel03.add(label);
frame.add(panel03,BorderLayout.WEST);
//中间的面板
JPanel panel04 = new JPanel();
panel04.setLayout(null);//绝对布局,可以直接设置位置

JComboBox box = new JComboBox();
box.setBounds(20, 15, 180, 20);//角上的点X,Y,长,宽
box.addItem("122213124");
box.addItem("654657");
box.addItem("46547556");
box.addItem("54756865");
panel04.add(box);
JLabel label01 = new JLabel("注册账号");
panel04.add(label01);
box.setEditable(true);
label01.setBounds(210, 15, 60, 20);

//实例化一个LoginListener类的对象
// LoginListener3 listener3 = new LoginListener3();

//给事件源对象添加动作监听器方法
// label01.addActionListener(listener3);

JPasswordField password = new JPasswordField();
panel04.add(password);
password.setBounds(20, 55, 180, 20);

//实例化一个LoginListener类的对象
LoginListener2 listener2 = new LoginListener2(password, false);

//给事件源对象添加动作监听器方法
password.addActionListener(listener2);

JLabel label02=new JLabel("找回密码");
panel04.add(label02);
label02.setBounds(210, 55, 60, 20);

frame.add(panel04,BorderLayout.CENTER);
frame.setSize(400,300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);



}

public static void main(String[]args){
boolean f1;
f1=false;
Login login = new Login();
login.show();
}

}

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

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class LoginListener implements ActionListener{
private boolean f1;
public LoginListener(boolean f1) {

this.f1=f1;
}
@Override
public void actionPerformed(ActionEvent l) {
// TODO Auto-generated method stub
//System.out.println("你点击了"+l.getActionCommand()+"按钮");
if (f1=true){
JFrame frame=new JFrame("QQ登录中");
frame.setSize(382,320);
frame.setDefaultCloseOperation(2);
frame.setLocationRelativeTo(null);//设置窗口居中
frame.setResizable(false);//不允许设置窗口大小
//插入图片
ImageIcon image01 = new ImageIcon("images/04.jpg");//加入图片
JLabel label03 = new JLabel(image01);
frame.add(label03);

frame.setVisible(true);}
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值