首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

8.接口和事件

2012-09-14 
八.接口和事件1.定义接口的语法格式关键字是interface格式:public interface 接口名 extends 接口名,...{/

八.接口和事件
1.定义接口的语法格式
关键字是interface
格式:
public interface 接口名 extends 接口名,...{
//常量
public static final 数据类型  常量名  = 值;
注意:常量名所有的字母全部大写。
//抽象方法
public 返回值类型  方法名(参数类型 参数名,...);
注意:不能加{},如果加了就表示方法有了具体的实现,不再是抽象方法了。
}
注意:
1.接口默认的访问修饰符是public
2.接口不能用来实例化对象

2.实现接口的语法格式
关键字implements
格式:
public class 类名 extends 类名(抽象类)  implements 接口名,...{

}
注意:
当一个类实现一个接口的时候,那么该类就必须要实现(重写)接口中定义所有抽象方法。
类实现一个接口时,还是去继承一个类或者抽象类,(java类的继承是单继承)
类可以同时实现多个接口。

3.接口和类的区别
1.定义的关键字不同
2.接口中的方法只是抽象的,类中的方法必须要有具体的实现。
3.接口中没有属性和构造方法,类中可以有。
4.接口不能创建对象,类可以实例化(创建)对象。
5.接口如果继承接口不需要实现方法,类实现接口就必须要实现所有的抽象方法。

4.接口的用途
1.接口是一种特殊的类。
2.接口是用来定义程序的规则。
3.接口编程。Spring

5.抽象类
关键字
abstract class
格式:
public abstract class 抽象类名 extends 类(抽象类) implements 接口,...{
//抽象方法定义:
访问修饰符(protected public) abstract  返回值类型  方法名(参数类型  参数名,...);
}
抽象类中可以定义的:
1.属性,常量,方法,构造方法,抽象方法。
抽象类可以定义抽象方法,所以当类去继承抽象类的时候,必须要实现抽象类中所有的抽象方法。
抽象类中可能有抽象方法,所以不能用来实例化对象.

6.swing事件机制
事件源:登录按钮,你得动作是发生在哪一个组件上,那么该组件就是事件源。
事件类型:addActionListener();
ActionListener   动作监听器接口,所以定义一个类去实现这个接口  LoginListener
事件处理者:动作监听器接口的一个方法或者LoginListener类

练习:
完善登录界面的登录功能。

Login.java

package cn.netjava.lesson5;

import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
//引入JFrame类,在之后的使用过程中就无需再加包名
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

/**
* 登录界面开发,让Login类继承自JFrame类
*
* @author Administrator
*
*/
public class Login extends JFrame {

/**
* 主函数
*/
public static void main(String[] args) {
Login login = new Login();
login.init();
}

/**
* 初始化界面的方法
*/
public void init() {
this.setTitle("登录界面");
this.setSize(300, 200);
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);

//设置窗体的布局为流式布局
this.setLayout(new FlowLayout());

//实例化一个图标对象
ImageIcon image = new ImageIcon("images/login.jpg");
//实例化一个标签对象,并且将图标对象作为参数
JLabel lblImage = new JLabel(image);
//将标签对象添加到窗体上
this.add(lblImage);

// 实例化账号对象添加到窗体上
JLabel lblName = new JLabel("账号:");
this.add(lblName);
// 实例化账号输入框对象,并添加到窗体上
JTextField txtName = new JTextField(20);
this.add(txtName);

// 实例化密码对象添加到窗体上
JLabel lblPwd = new JLabel("密码:");
this.add(lblPwd);
// 实例化密码输入框对象,并添加到窗体上
JTextField txtPwd = new JTextField(20);
this.add(txtPwd);

//实例化一个登录按钮对象,并且添加到窗体上
JButton btnLogin = new JButton("登录");
this.add(btnLogin);

//实例化一个事件处理者对象
LoginListener ll = new LoginListener(txtName,txtPwd);
//登录按钮是事件源,给事件源添加一个监听动作事件的方法
btnLogin.addActionListener(ll);

this.setVisible(true);
}

}

LoginListener.java

package cn.netjava.lesson5;

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

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

/**
* 事件处理者类,该类要实现一个动作监听器接口
* @author Administrator
*
*/
public class LoginListener implements ActionListener {

private JTextField txtName;
private JTextField txtPwd;

/**
* 构造方法(引用传递)
* @param txtName账号输入框
* @param txtPwd密码输入框
*/
public LoginListener(JTextField txtName,JTextField txtPwd){
//赋值
this.txtName = txtName;
this.txtPwd = txtPwd;
}

/**
* 事件处理方法
* @param ActionEvent对象中会存储和事件源相关的信息。
*/
@Override
public void actionPerformed(ActionEvent e) {
//获取账号
String name = txtName.getText();
//获取密码
String pwd = txtPwd.getText();

//判断是否相等
if(name.equals(pwd)){
JFrame jf = new JFrame("画板");
jf.setSize(600,500);
jf.setDefaultCloseOperation(2);
jf.setVisible(true);
}else{
JOptionPane.showMessageDialog(null, "账号或密码错误,请重新输入!");
}

//输出一个语句
System.out.println("你点击了:"+e.getActionCommand()+"按钮!");
}
}

Shape.java

package cn.netjava.lesson5;

/**
* 定义一个图形接口
* @author Administrator
*
*/
public interface Shape {

/**
* 名字常量
*/
public static final String NAME = "蓝杰";

/**
* 定义一个画图形的抽象方法
*/
public void draw();

}

ShapeImpl.java

package cn.netjava.lesson5;

/**
* 定义一个图形的实现类,该类实现Shape接口
* @author Administrator
*
*/
public class ShapeImpl implements Shape {

/**
* 实现父接口的抽象方法
*/
@Override
public void draw() {
System.out.println(NAME+"正在画图!");
}

/**
* 主函数
*/
public static void main(String [] args){
//实例化ShapeImpl类的对象
ShapeImpl si = new ShapeImpl();
si.draw();
}

}



热点排行