Java开发工程师是怎样炼成的------按钮篇(Buttons)之二

    今天主要接触一下按钮群组(Button groups)的概念,顺便介绍一种创建按钮的新方法。先看下面的代码。

 

import  javax.swing. * ;
import  java.awt. * ;
import  javax.swing.border. * ;
import  java.lang.reflect. * ;

public   class  ButtonGroups  extends  JApplet  {
    
static String[] ids = "June""Ward""Beaver""Wally""Eddie",
            
"Lumpy", }
;
//介绍一种新的产生按钮的方法,只需要传入你想创建的按钮的类的class形式
    static JPanel makeBPanel(Class bClass, String[] ids) {
        ButtonGroup bg 
= new ButtonGroup();
        JPanel jp 
= new JPanel();
        String title 
= bClass.getName();//结果是javax.swing.JButton(JButton.class)等等
        title = title.substring(title.lastIndexOf('.'+ 1);
        jp.setBorder(
new TitledBorder(title));
        
//产生按钮的新颖方法
        for (int i = 0; i < ids.length; i++{
            AbstractButton ab 
= null;
            
try {
                Constructor ctor 
= bClass.getConstructor(new Class[] { String.class });//bClass为ctor的声明类
                ab = (AbstractButton) ctor.newInstance(new Object[] { ids[i] });//创建声明类的新实例
            }
 catch (Exception ex) {
                System.err.println(
"can't create " + bClass);
            }

            bg.add(ab);
            jp.add(ab);
        }

        
return jp;
    }


    
public void init() {
        Container cp 
= getContentPane();
        cp.setLayout(
new FlowLayout());
        cp.add(makeBPanel(JButton.
class, ids));
        cp.add(makeBPanel(JToggleButton.
class, ids));
        cp.add(makeBPanel(JCheckBox.
class, ids));
        cp.add(makeBPanel(JRadioButton.
class, ids));
    }


    
public static void main(String[] args) {
        ButtonGroups applet 
= new ButtonGroups();
        JFrame frame 
= new JFrame(applet.getClass().toString().substring(6));// 建立一个名字为Buttons的frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// frame关闭方法
        frame.getContentPane().add(applet);
        applet.init();
        applet.start();
        frame.setSize(
600300);
        frame.setVisible(
true);
    }

}
 

    一、作用:

    将一组按钮加到同一个按钮群组(Button groups)当中,就可以实现,同一群组当中的按钮以互斥的方式运作。

二、例子难点解答:

    cp.add(makeBPanel(JButton.class, ids));// 产生一个按钮,并将按钮加到JPanel上。下面介绍一下makeBPanel函数。

    for循环内,是产生按钮的关键代码部分。

    AbstractButton ab = null;//初始化一个按钮(所有的按钮都是AbstractButton 的子类)

    Constructor ctor = bClass.getConstructor(new Class[] { String.class });//建立一个构造函数对象

    ab = (AbstractButton) ctor.newInstance(new Object[] { ids[i] });//创建bClass的新实例

  优点:可以将(AbstractButton )按钮的产生集中到一个函数体,缩小了代码量,适合大的应用程序。

   缺点:增加了复杂度,适合于小的应用

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值