如何自定义组件(JavaBean)

如何自定义组件(JavaBean

   程序员可以将已经有的图形组件组合起来,形成新的组件,这就是JavaBeanJavaBean是一种可重复使用并且跨平台的组件。用户可在一个构造工具中以可视化方式操作它。JavaBean可用来绘图、加密解密、实现数据访问、实现FTP等。JavaBean开发阶段首先是构造阶段,涉及创建JavaBean与它的用户界面;其次是执行阶段,涉及把JavaBean放入容器应用的执行。JavaBean的元素包括:

①属性:为包含在JavaBean中私有成员数据。

②方法:包含在JavaBean的公共成员函数中,用来操纵bean属性,暴露bean的功能。

③事件:用来对bean属性值变动或对其他beans状态的变动进行通信。

   编写测试JavaBean的四个步骤如下:

a.        编写事件类:必须扩展java.util.EventObject类,确定事件发生时,要传达给客户的参数的类型及数量。

b.        编写构造方法,注意构造方法参数的个数,应该是此类定义放入属性数量+1.

事件监听接口:

此接口的声名为:public interface 接口名 extends EventListener

c.         bean类(事件处理程序):应定义addXXListener()fireXXEvent()方法。

d.        编写目标应用:使用触发自定义事件的bean,首先必须注册它自身为蒂尼时间的一个监听程序。应定义代码,指出在触发自定义事件时必须做的事。

 

31.使用JavaBean实现登录窗口

      验证用户登录时,通常创建包括两个标签、两个按钮、一个文本框和一个密码框的界面。

package 31_使用JavaBean实现登录窗口;

 

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.EventObject;

 

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

 

import org.w3c.dom.events.Event;

import org.w3c.dom.events.EventListener;

 

//第一步  封装实现的类

class LoginEvent extends EventObject{

          /**

           *

           */

          private static final long serialVersionUID = -5072939946217322803L;

          public String sUserName;

          public String sUserPass;

          public LoginEvent(Object obj,String sUserName,String sUserPass){

                   super(obj);

                   this.sUserName=sUserName;

                   this.sUserPass=sUserPass;

          }

}

 

//第二步 定义接口

interface LoginListener extends EventListener{

          public void validateLogin(LoginEvent mec);

}

 

//第二步  编写JavaBean

class LoginBean extends JPanel implements ActionListener{

          /**

           *

           */

          private static final long serialVersionUID = 1L;

          JLabel lblUser=new JLabel("用户名:");

          JLabel lblPass=new JLabel("用户名:");

          JTextField txtUser=new JTextField(15);

          JPasswordField txtPass=new JPasswordField(15);

          JButton buttonLogin=new JButton("登录");

          JButton buttonCancel=new JButton("取消");

          public LoginBean(){

                   setLayout(new FlowLayout());

                   add(lblUser);add(txtUser);

                   add(lblPass);add(txtPass);

                   add(buttonLogin);buttonLogin.addActionListener(this);

                   add(buttonCancel);buttonCancel.addActionListener(this);

          }

          LoginListener mel;

          public void addLoginListener(LoginListener mel){

                   this.mel=mel;

          }

          LoginEvent mec;

          public void fireLoginEvent(LoginEvent mec){

                   if(mel!=null)

                            mel.validateLogin(mec);

                   else

                            System.out.println("Client not init");

          }

          public void actionPerformed(ActionEvent ae){

                   if(ae.getSource()==buttonLogin){

                   String temp1=txtUser.getText();

                   String temp2=new String(txtPass.getPassword());

                   mec=new LoginEvent(buttonLogin,temp1,temp2);

                   fireLoginEvent(mec);

                   return;

          }

          if(ae.getSource()==buttonCancel){

                   System.exit(0);

          }

                   }

}

 

 

//第四步   编写测试类

public class LoginValidator extends JFrame implements LoginListener{

    /**

           *

           */

          private static final long serialVersionUID = 3341214847598574650L;

          LoginBean meb;

    public LoginValidator(){

      super("使用JavaBean实现登录窗口");

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      meb=new LoginBean();

      getContentPane().add(meb);

      meb.addLoginListener(this);

    }

    public void validateLogin(LoginEvent mec){

      String s1=mec.sUserName;

                   String s2=mec.sUserPass;

                   JOptionPane.showMessageDialog(this,"用户名是"+s1+"\t密码是"+s2);

                  

    }

          public static void main(String[] args) {

          LoginValidator mec=new LoginValidator();

          mec.setSize(300,300);

          mec.setVisible(true);

 

          }

          @Override

          public void handleEvent(Event arg0) {

                   // TODO Auto-generated method stub

                  

          }

 

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值