Java:控制反转

Java中自带的函数或对象都是编写软件的时候写的,当它需要调用你自己编写的数据的时候,它如何又不知道你定义的类(对象)是什么,里面有什么成员,它无法调用你的代码,这个时候就需要用到控制反转了。
简单来说,控制反转是java编写时留的一个接口,它可以通过这个接口来调用你自己写的代码。

如下代码是控制反转的一个示例,代码定义了一个按钮,将按钮添加进窗口中,
当点击时触发addActionListener(控制反转)

package test;

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

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

 

public class test extends JFrame{     //需要继承JFrame
	
    public test(String title)
    {

        JFrame frame = new JFrame(title);    
        JButton bnt3 = new JButton("Hello,Java");
        JLabel lab1 = new JLabel("Hello,label");
        frame.add(bnt3, BorderLayout.SOUTH);
        frame.add(lab1);
        frame.setBounds(200,200,300,200); //设置窗口的属性 窗口位置以及窗口的大小
//      frame.pack();
        frame.setVisible(true);//设置窗口可见
        bnt3.addActionListener(new ActionListener() {
        	
			@Override
			public void actionPerformed(ActionEvent e) {
				PrintPrompt();			//按钮调用类中的成员
				lab1.setText("btn3");
				frame.repaint();
			}
		});
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    public void PrintPrompt() {
    	System.out.println("this is a function");
    }
    
    public static void main(String[] args) {
        new test("窗口");        //创建窗口
        
    }
}

JButton类是很早就写好的,在编写时不可能想到后面我写了“test”类,它就需要进行控制反转。

JButton类知道自己什么时候被按下去了,JButton类有一个接口ActionListener,接口中只有一个函数:actionPerformed()。
JButton还有一对函数:addActionListener和removeActionLister。

如果你对JButton被按下去感兴趣(按下去执行操作),就实现一个ActionListener接口的子类,这样你定义出来的类也会有actionPerformed()的函数(继承),你可以对子类中的actionPerformed()函数进行各种操作,如调用外部类的成员(如果是内部类)、输出一个数值、改变窗口的显示等等。
操作完成后通过addActionListener将子类的actionPerformed()传递给JButton,JButton再通过actionPerformed返回来调用你传进来的成员。
因为数据(函数)是通过actionPerformed()传给JButton,所有格式肯定符合actionPerformed的规范,可以被JButton使用。
请添加图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值