一、接口
- 父类和子类比较,父类是一个比子类更抽象的类。这个抽象体现在两个方面:一是父类的属性和方法比子类的少;二是,子类的方法比父类的方法更加具体。
- 当父类非常抽象时,或者我们仅仅知道这个类的对象应该干什么,但是说不清楚如何去做,只有到了子类我们才知道该如何做,这个时候我们可以定义这样一个类,类中的方法只有方法的定义,没有方法体,如果一个类中的所有方法都没有方法体,这个类我们就叫做接口:
//继承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;
public class Login {
public void showFrame(){
//窗体对象
javax.swing.JFrame JF=new javax.swing.JFrame();
JF.setSize(400, 410);
JF.setTitle("MO-登陆界面");
JF.setDefaultCloseOperation(3);
//设置退出方法
JF.setLocationRelativeTo(null);
//设置居中显示
//流式布局
java.awt.FlowLayout flow=new java.awt.FlowLayout();
JF.setLayout(flow);
//设置窗体为流式布局
javax.swing.ImageIcon image = new javax.swing.ImageIcon("C:\\Users\\mo\\Pictures\\Saved Pictures\\animal\\cat6_副本.jpg");
javax.swing.JLabel lai=new javax.swing.JLabel(image);
JF.add(lai);//添加图片
javax.swing.JLabel number=new javax.swing.JLabel("用户名:");
JF.add(number);//添加用户文本
javax.swing.JTextField jtx1=new javax.swing.JTextField();
java.awt.Dimension tx1=new java.awt.Dimension(300, 30);
jtx1.setPreferredSize(tx1);
JF.add(jtx1);//添加用户名
javax.swing.JLabel password=new javax.swing.JLabel(" 密码: ");
JF.add(password);//添加密码文本
javax.swing.JTextField jtx2=new javax.swing.JTextField();
java.awt.Dimension tx2=new java.awt.Dimension(300, 30);
jtx2.setPreferredSize(tx2);
JF.add(jtx2);//添加密码
javax.swing.JButton register=new javax.swing.JButton("注册账号");
javax.swing.JButton findpassw=new javax.swing.JButton("找回密码 ");
JF.add(register);//加到窗体中
JF.add(findpassw);//加到窗体中
javax.swing.JCheckBox rp=new javax.swing.JCheckBox("记住密码");
JF.add(rp);
javax.swing.JCheckBox de=new javax.swing.JCheckBox("自动登陆");
JF.add(de);
javax.swing.JButton dbut=new javax.swing.JButton(" 登 陆 ");
dbut.setBackground(java.awt.Color.cyan);//背景色
JF.add(dbut);
JF.setVisible(true);
//监听
ButListener but=new ButListener(jtx1,jtx2);
dbut.addActionListener(but);
}
}
给组件添加监听器:
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);
}
}
主函数:
package com.listener;
public class Main {
public static void main(String [] args){
Login lo=new Login();
lo.showFrame();
//显示窗体
}
}
显示结果