接口和事件
来源:互联网 发布:淘宝上隐形文胸哪种好 编辑:程序博客网 时间:2024/06/05 19:58
接口和事件
一.背景简介
1.开发平台:Eclipse
2.开发语言: java语言
二.理论依据
1.接口
1)接口的定义
关键字 interface
格式 public interface 接口名extends 接口,……(可以有许多个父接口)
定义常量 public static final 数据类型 常量名=值
定义抽象方法 public abstract 返回值类型 方法名(数据类型 参数名……);(可以有许多个参数)
注意:a.常量与抽象方法前面的修饰符都是固定的,也可以不写,因为是默认的,可以直接写:数据类型 常量名=值,返回值类型 方法名。
b.接口中的方法都是抽象的,所以()后不能接{}具体定义,必须用;结束这条语句。
c.接口可以继承一个或者多个父接口
d.接口只有一种访问修饰符public
e.接口不能实例化对象
2)接口的实现
关键字 implement
格式 public class 类名extends 类名implement 接口,……{}(可以有好几个)
注意:a.类中必须要实现接口中的所有的抽象方法
b.类不光可以继承类,还可以继承或者说是实现接口(可以好几个)
C. Object是所有类的父类
3)类与接口的区别
a.关键字不同:类是class,接口是interface
b.定义格式不同:接口只能是public static final定义常量,public abstract定义抽象方法
c.修饰符不同:接口只能用public修饰,而类可以有四种:public private默认 protected
d.继承的父类个数不同:接口可以继承好几个,类只能继承一个父类,但可以继承好几个接口
e.实例化对象不同:接口不能实例化,只能放到类中实例化。
2.事件
1)事件源
定义:只有awt或者swing提供的容器组件或者是元素组件对象
如何确定事件源:动作所发生在的组件就是事件源
2)监听
主要有四种监听,监听四种动作,如果有这种动作,那么这个方法就会被激活,然后用方法中的参数对象,来调用对应的事件方法
addActionListener(ActionListener l)类似按钮上的点击和类似输入框的键盘回车
addMouseActionListener(MouseListener l)事件源上是否有鼠标进入、离开、鼠标按键落下、鼠标按键松开
addMouseMotionListener(MouseMotionListener l )事件源上是否有鼠标移动或拖动
addKeyListener(KeyListener l)事件源上是否有键盘按键放下、释放和敲击
3)接口
ActionListener 动作事件接口
MouseListener 鼠标事件接口
MouseMotionListener 鼠标移动事件接口
KeyListener 键盘事件接口
因为接口不能实例化对象,所以需要定义类来实现对应的事件接口,实现接口中的抽象方法
三.应用举例
已有一个登录界面,用接口和事件实现登录功能。
要求:a.在输入密码后敲击回车或者点击登录按钮,都能够进入另一个界面,原界面消失。
b.只有输入争取的用户名和密码才能进入,错误则弹出提示框
1)修改原有的login1类
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.*;
//ctrl+alt+o自动添加import
public class Login1 extends JFrame{
public static void main(String[]args) {
// TODO Auto-generated method stub
Login1 lg=new Login1();
lg.initUI();
}
public void initUI(){
setTitle("登录");
setSize(300,400);
setLocationRelativeTo(null);
setDefaultCloseOperation(3);
setResizable(false);//不允许修改大小
setBackgroundImage();
FlowLayout fl=new FlowLayout();
setLayout(fl);
ImageIcon image=newImageIcon(
this.getClass().getResource("aaa.png"));
JLabel labelimage=new JLabel(image);
add(labelimage);
JLabel label=new JLabel("账号");
add(label);
JTextField txtfield=new JTextField("admin");
txtfield.setPreferredSize(new Dimension(250,30));//文本框的大小
add(txtfield);
JLabel label1=new JLabel("密码");
add(label1);
JPasswordField password=new JPasswordField("1234567");
password.setPreferredSize(new Dimension(250,30));
add(password);
JCheckBox chb=new JCheckBox("自动登录");
chb.setPreferredSize(new Dimension(130,20));
chb.setOpaque(false);//透明化
add(chb);
JCheckBox chb1=new JCheckBox("记住密码");
chb1.setPreferredSize(new Dimension(130,20));
chb1.setOpaque(false);
add(chb1);
JButton button=new JButton("登录");
add(button);
setVisible(true);//设置JFrame可见
LoginListener listener=new LoginListener();//实例化监听类
listener.setUserText(txtfield,password,this);//把账号和密码输入框的对象借给listener
button.addActionListener(listener);//给按钮和密码添加监听
password.addActionListener(listener);
}
public void setBackgroundImage(){
ImageIcon image=new ImageIcon(
this.getClass().getResource("bbb.png"));
JLabel labelimage=new JLabel(image);
labelimage.setBounds(0, 0, image.getIconWidth(), image.getIconHeight());;
getLayeredPane().add(labelimage, new Integer(Integer.MIN_VALUE));//把这个面板放到最底下
JPanel countentPane=(JPanel)getContentPane();
countentPane.setOpaque(false);
}
}
2)定义LoginListener监听类
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
//接口第一种情况的监听接口
public class LoginListener extends JFrameimplements ActionListener{
private JTextField txtfield,password;
private JFrame login1;//把需要像第一个界面借的东西定义出来
//定义“借”这个方法
public void setUserText(JTextFieldtxtfield,JTextField password,JFrame login1){
this.txtfield=txtfield;
this.password=password;
this.login1=login1;
}
//实例化ActionListener接口中的方法
public void actionPerformed(ActionEvente){
//获取输入框中的内容
String name=txtfield.getText();
String pass=password.getText();
if("admin".equals(name)&&"1234567".equals(pass)){
//写第二个框的属性
setSize(400,500);
setTitle("draw");
setLocationRelativeTo(null);
setDefaultCloseOperation(2);
setResizable(false);
setVisible(true);
JLabel label2=new JLabel("你终于进来了,真是心塞塞");
add(label2);
login1.setVisible(false);
}else
{JOptionPane.showMessageDialog(null,"登录失败!");//提示框
}
}}
注意:a.在验证是否能够进入第二个界面以及第一个界面消失的时候,需要用到第一个界面的账号输入框、密码输入框、第一个界面的主界面,这三个都需要第二个向第一个借,所以要定义“借”的方法和参数对象。
b.将数遍放在接口事件上,按F3键,。可以在详细代码中快速找到接口中的方法,直接复制出来
c.提示框中,逗号前指的是相对于某个组件的正中央,null就是全屏正中央,如果写上login1,就是一直相对于login来说。
3)运行结果
a.登录界面
b.成功登录后 登录失败时
- 接口和事件
- 事件和包含事件的接口实现
- Swing+接口和事件机制
- Remoting实验,基础部分和接口事件
- C#委托,事件,接口,反射和关键字
- c# 实现自定义事件访问器 和 实现接口事件
- Java学习笔记--------Java的事件和事件处理接口
- 接口,事件
- 委托、事件、接口等之间的关系和区别[转载]
- 客户端调用COM, 实现接口调用和COM事件通知
- 关于继承、多态、委托、事件和接口的理解
- Flex的Module通信,事件和接口方式
- 【设计模式】抽象类、接口、委托和事件
- USB接口事件唤醒睡眠系统的分析和理解
- 基于接口和基于事件的回调-Android
- JAVA继承的拓展——接口和事件机制
- Java——Swing界面,接口和事件
- listView中Button点击事件和接口的写法
- tcp_tw_recycle和tcp_timestamps导致connect失败问题
- 关于hashCode方法的作用
- c#---读文件
- 【HDU 2512】【这是DP吗?】一卡通大冒险
- 山东省第三届ACM省赛题——Thrall’s Dream(DFS)
- 接口和事件
- [hdu 4452] Running Rabbits 模拟
- 跋涉不止(41)
- arm移植NTP(同步嵌入式linux系统时间)
- SSH与FTP之间的关系与区别
- tomcat部署HelloWorld出错。
- 惜
- bzoj4454: C Language Practice
- 数据结构--插入排序