组件化 面向对象的一种思想方式

继承是   is  是的关系

1、组件化 是  面向对象的一种思想,(对象与对象之间的相互组合),涉及到继承和构造函数的2个应用,并需要重载我们在实际应用中,我们对需要的对象的特征 作为构造方法的参数进行传递

2、需要运用到的组件(类都已经存在)运用面向对象的思想,当2个组件需要相关联的时候,只需要创建组件的对象,继承父类

在构造函数中,重载组件我们应用需要的构造方法,通过实参和形参额形式对该类对象进行初始化

3、通过参数列表的形式将2个类关联起来

4、涉及到this 关键字的使用,相当的重要及简便

  我们首先运用接触到的就是窗口组件的组合使用

·

首先的组合使用就是   标签与窗体相关联

需要添加3个组件在一个窗体中:运用面向对象的思想:需要的类有  窗体,文本框,标签,按钮  4个对象

运用面向对象的思想 ,  在本类继承窗体类 ,在主函数创建本类对象 ,通过本类构造函数对本类对象进行初始化

在本类的构造函数中 ,通过关键字 this  创建窗体容器,并设置窗体的具体参数

因本题的特点 ,一个类只关联一个类 ,

(也可以通过本类跟其他3个类一起关联起来,因坐标的特殊性,就不这样做了)

1、创建一个类继承 按钮类

        1、 该类对象的初始化是在该类的构造函数中完成的

         2、在该类的构造函数中通过参数列表的形式对需要传递的参数作为构造函数的形式参数 ,特别需要说明的是,本类因需要和调用类相关联

             所以在形式参数中除了需要传递按钮设置的基本形式参数以外,还需要将调用类的 对象作为形式参数进行传递,这样这2个类才能关联起来

       3、因该类继承文本框类 ,所以在该类的构造函数中运用  this 关键字 设置 按钮对象的具体属性,(通过形式参数的方式传递完成对象的设置)

           并通过调用类对象的 添加方法         将 本类对象(this)    添加进调用类 ,这样2个类就相关联起来了

 2、 创建一个类继承 文本框类

                1、 该类对象的初始化是在该类的构造函数中完成的

                2、在该类的构造函数中通过参数列表的形式对需要传递的参数作为构造函数的形式参数 ,特别需要说明的是,本类因需要和   调用类相关联

                 所以在形式参数中除了需要传递文本框设置的基本形式参数以外,还需要将调用类的 对象作为形式参数进行传递,这样这2个类才能关联起来

                3、因本题的特点标签类与文本框类的重用性较大,所以在本类构造函数中创建标签类对象  , 并完成标签对象的数据设置 

                  并将标签对象  作为对象  添加进窗体对象

                4、在本类中通过形式参数的形式完成文本框对象的的设置   ,  并用窗体对象添加本类对象 

    

3、     在调用类中的构造函数中,通过创建其他类对象的方式(含参数的构造方法) 其他类对象并通过其他类的构造函数,完成对象的创建,并已经添加进窗体对象          了 ,就完成了该功能的的使用!

import javax.swing.JFrame;

public class HomeWork_3 extends JFrame

{

      public HomeWork_3 ()
      {


            MyButton_3 but1 = new MyButton_3("添加",80,400,this);
             MyButton_3 but2 = new MyButton_3("删除",240,400,this);
           MyButton_3 but3 = new MyButton_3("修改",80,480,this);
          MyButton_3 but4 = new MyButton_3("查找",240,480,this);



              MyText_3 te1 = new MyText_3("姓名",100 ,100 ,this);
              MyText_3 te2 = new MyText_3("年龄", 100,180 ,this);
              MyText_3 te3 = new MyText_3("性别",100 , 260,this);
              MyText_3 te4 = new MyText_3("电话", 100,340 ,this);

                  this.setLayout(null);
              this.setSize(400, 600);
               this.setVisible(true);
              this.setDefaultCloseOperation(3);
                this.setLocationRelativeTo(null);

         }
               public static void main(String[] args)

             {
               HomeWork_3 h = new HomeWork_3();

             }

}

import javax.swing.JLabel;
import javax.swing.JTextField;

public class MyText_3 extends JTextField{

public MyText_3 (String str ,int a ,int b ,HomeWork_3 h)
{

JLabel jla = new JLabel();
jla.setText(str);
jla.setBounds(a, b, 80, 30);
h.add(jla);


this.setBounds(a+80, b, 120, 30);
h.add(this);

}

}

import javax.swing.JButton;

public class MyButton_3 extends JButton{

public MyButton_3(String str ,int a,int b, HomeWork_3 h)
{
this.setText(str);
this.setBounds(a, b, 80, 30);
h.add(this);
}
}

原文地址:https://www.cnblogs.com/weilin/p/5339506.html