一、接口
- 父类和子类比较,父类是一个比子类更抽象的类。这个抽象体现在两个方面:一是父类的属性和方法比子类的少;二是,子类的方法比父类的方法更加具体。
- 当父类非常抽象时,或者我们仅仅知道这个类的对象应该干什么,但是说不清楚如何去做,只有到了子类我们才知道该如何做,这个时候我们可以定义这样一个类,类中的方法只有方法的定义,没有方法体,如果一个类中的所有方法都没有方法体,这个类我们就叫做接口:
//继承person接口
public interface Person{
//接口中的属性默认是public static final,只能是public static final
public static final int num=100;
//接口中的方法默认是public abstract,只能是public abstract
void eat();
public abstract void rest();
}
- 需要注意的是:
接口的定义不是用class 而是用 interface 接口中同样可以定义属性和方法 *接口中的属性必须是一个公共的静态变量public static final *接口中的方法必须是一个公共的抽象方法public abstract 因为接口中的方法都是抽象方法,所以接口是没有构造方法的,不能创建对象,定义一个接口的主要作用就是给子类扩展,接口是一种数据类型 - 接口的实现
//studen类,实现person接口
public class Student implements Person{
//实现接口中的方法,必须加上public
public void eat(){
System.out.println('学生在吃饭');
}
//实现接口中的方法,必须去掉abstrac
public void rest(){
System.out.println('学生在宿舍休息');
}
}
接口的实现(继承)使用implements关键字,这是与类的extends不同的;实现类中,必须重写(实现)接口中定义的所有方法! 使用:
public static void main(String[] args){
//创建学生类对象
Person p1=new Student();
//重写父类的方法
p1.eat();
p1.rest();
}
二、事件监听器
我们要监视一个界面上的按钮有没有被点击,就要给按钮装上一个类似监听器的东西,这个东西叫做事件监听器。
- 在Java中,每个事件都对应有一个时间监听器,它们被定义在
Java.awt.event 这个包中 - 事件监听器都是接口,我们要定义一个类来实现对应的接口
下面的程序实现的是判断输入框中的用户名和密码是否都是“123”(可以自己修改),若是则弹出窗口提示yes,若不是弹出窗口提示no 事件监听器:监听点击按钮
public interface ActionListener extends EventListener {
/**
* Invoked when an action occurs.
*/
public void actionPerformed(ActionEvent e);
}
显示窗体(接上一篇登陆界面):
给组件添加监听器:
package com.listener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
/**
* 使用监听器接口
* @author mo
*
*/
public class ButListener implements ActionListener {
//全路径创建
private javax.swing.JTextField jtx1=new javax.swing.JTextField();
private javax.swing.JTextField jtx2=new javax.swing.JTextField();
//构造传参
public ButListener(JTextField jtx1,JTextField jtx2) {
this.jtx1 =jtx1;
this.jtx2=jtx2;
}
public void actionPerformed(ActionEvent e){
javax.swing.JFrame jf=new javax.swing.JFrame();
jf.setSize(150, 80);
jf.setTitle('提示');
jf.setDefaultCloseOperation(1);//退出进程方法,关闭时不退出程序
jf.setLocationRelativeTo(null);//设置居中显示
java.awt.FlowLayout flow= new java.awt.FlowLayout();
jf.setLayout(flow);//流式布局
String display;
//判断是否满足条件
if(jtx1.getText().equals('123')&&jtx2.getText().equals('123')){
display='Yes!';
}else{
display='No!';
}
//在窗体中显示字体
javax.swing.JLabel t=new javax.swing.JLabel(display);
//在窗体中加入标签
jf.add(t);
//设置可见
jf.setVisible(true);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
主函数:
package com.listener;
public class Main {
public static void main(String [] args){
Login lo=new Login();
lo.showFrame();
//显示窗体
}
}
显示结果
|