接口和事件机制

1.接口定义:

    关键字是:interface

    定义格式:

             public interface 接口名 extends 接口,... {

//定义常量      注意:常量名的每一个字母都要大写,类也是一样!

public static final 数据类型 常量名 = 值;

                (三个写任意一个或者两个三个都行)

static final 数据类型 常量名 = 值;

数据类型 常量名 = 值;

 

//定义抽象方法

public 返回值数据类型 方法名(数据类型 参数名,...);

public abstract 返回值数据类型 方法名(数据类型 参数名,...);

返回值数据类型 方法名(数据类型 参数名,...);

    }

            注:接口是一种特殊的类!

                   接口中只有一种访问修饰符,就是public

                   接口和普通类的区别:接口中方法全部抽象方法,定义关键字不同,接口可以继承多个

                                                      接口,接口被集成后方法要全部实现,接口不能实例化对象,

2.接口的实现:

        实现接口的关键字:implements

实现格式:

public class 类名 extends 类或者抽象类 implements 接口名,... {

 

}

注意:

1.必须要实现接口中所有的抽象方法。

2.类去实现接口实际上就让类和接口拥有继承关系。

 

接口作用:

1.接口就是丰富类的继承。

2.事件机制中要使用接口。

3.团队开发

   例子:

package 接口;


/*画圆的类的实现*/
public class ImpOval implements NetJavaShape {
	
	public String doWork(){
		String a="啦啦啦!";
		return a ;
	}
	public void draw(int x1 ,int y1,int x2,int y2){
		System.out.print("画圆形!");
	 
		//接口中的属性定义可以作为常量使用
		System.out.println("出品人:"+NetJavaShape.compName);
	}
	
	public String doOther(){
		String s="这是我实现OtherShape接口中的方法";
		return s ;
	}
	
	public static void main(String[] args){
		NetJavaShape shape=new ImpOval();
		int x1=10,y1=12 ;
		int x2=20,y2=20 ;
		shape.draw(x1,y1,x2,y2) ;
		
		//作为OtherShape
		OtherShape os=new ImpOval() ;
		OtherShape_1 os_1=new ImpOval(); 
		System.out.println(os.doOther());
		System.out.println(os_1.doWork());
	}
}



package 接口;

/*形状接口的定义*/
public interface NetJavaShape extends OtherShape,OtherShape_1 {

	public static final String compName="溫家顺" ;
	
	//接口中定义的方法,
	public void draw(int x1 , int y1 , int x2 ,int y2);
}



package 接口;

public interface OtherShape_1 {
	String doOther() ;
	String doWork() ;
}



package 接口;

public interface OtherShape {

	String doOther() ;
}


 

3.抽象类的实现与继承

抽象类介于类和接口之间的一种特殊类。

定义的关键字:abstract class

语法格式:

public abstract class 抽象类名 extends 类或者抽象类 implements 接口,... {

//定义类中所有的属性和方法(普通方法和构造方法)

//定义接口中的常量和抽象方法。

访问修饰符 abstract 返回值数据类型 方法名(数据类型 参数名,...);

}

注意:抽象类不能实例化对象。

 

 

事件机制三部分:事件源;事件监听器方法;事件处理类

 

4.事件源:可以成为事件源对象的是:所有的图形界面组件对象。

         你的动作发生在哪一个组件上,那么该组件对象就是事件源对象

5.事件监听器方法://动作监听器方法(输入框就是回车操作,按钮上就是鼠标单击)

                        addActionListener(ActionListener al);

                        //鼠标监听器方法

                        addMouseListener(MouseListener ml);

                        //鼠标移动监听器方法

                        addMouseMotionListener(MouseMotionListener mml);

                        //键盘监听器方法

                        addKeyListener(KeyListener kl);

6.事件处理类:定义类实现监听器接口。

例:

package 事件机制;

import java.awt.FlowLayout;
import java.awt.event.ActionListener;

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

public class JFrameTest {

	public static void main(String[] args) {
    JFrameTest jt = new JFrameTest() ;
    jt.showFrame() ;
	}
	public void showFrame(){
		JFrame jf =  new JFrame() ;
		jf.setTitle("界面");
		//创建流式布局管理器对象
		
		JLabel la_name=new JLabel("名字:") ;
		JTextField jta_name=new JTextField(10) ;
		JButton bu_login = new JButton ("登录") ;
		jf.add(la_name);
		jf.add(jta_name);
		jf.add(bu_login);
		
		FlowLayout f1 = new FlowLayout();
		jf.setLayout(f1);

		//设置窗体属性
		jf.setSize(500, 400); //窗口大小
		jf.setDefaultCloseOperation(3);//窗口可关闭
		jf.setLocale(null); //窗口位置
	   
				
				//窗体可见
				jf.setVisible(true);
		
		//窗体可见
		jf.setVisible(true);
		
		//创建一个监听器对象
		MyMouseListener m1 = new MyMouseListener();
		//监听器加给按钮
		bu_login.addActionListener((ActionListener) m1);
		
	}

}


package 事件机制;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;


public class MyMouseListener implements ActionListener {

	//重写接口中的所有函数
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
		//得到事件源对象
		Object sour = e.getSource() ;
		
		//如果事件源是一个按钮:
		if(sour  instanceof JButton){
		JButton bu =  (JButton) sour ;
			String lab = bu.getText() ;
			System.out.println("按下了一个按钮"+lab);
			//重新设一下按钮上的文字
			//“我被按了一下!”
		}
		else{
			System.out.println("其他组件发生的事儿!");
		}
	}
	
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值