java中的单选钮如何保持异或状态

    作者:课课家教育更新于: 2016-02-23 17:47:13

    大神带你学编程,欢迎选课

      如果我们想单选钮保持“异或”状态,我们必须增加它们到一个按钮组中,这几乎同老AWT中的方法相同但更加的灵活。在下面将要证明的程序例子是,一些AbstruactButton能被增加到一个ButtonGroup中。

    java中的单选钮如何保持异或状态_java构建器_java程序_课课家

      为避免重复一些代码,这个程序利用映射来生不同类型的按钮组。这会在makeBPanel中看到,makeBPanel创建了一个按钮组和一个JPanel,并且为数组中的每个String就是makeBPanel的第二个自变量增加一个类对象,由它的第一个自变量进行声明:

      //: ButtonGrouPS.java

      // Uses reflection to create groups of different

      // types of AbstractButton.

      package c13.swing;

      import java.awt.*;

      import java.awt.event.*;

      import javax.swing.*;

      import javax.swing.border.*;

      import java.lang.reflect.*;

      public class ButtonGroups extends JPanel {

      static String[] ids = {

      "June", "Ward", "Beaver",

      "Wally", "Eddie", "Lumpy",

      };

      static JPanel

      makeBPanel(Class bClass, String[] ids) {

      ButtonGroup bg = new ButtonGroup();

      JPanel jp = new JPanel();

      String title = bClass.getName();

      title = title.substring(

      title.lastIndexOf('.') + 1);

      jp.setBorder(new TitledBorder(title));

      for(int i = 0; i < ids.length; i++) {

      AbstractButton ab = new JButton("failed");

      try {

      // Get the dynamic constructor method

      // that takes a String argument:

      Constructor ctor = bClass.getConstructor(

      new Class[] { String.class });

      // Create a new object:

      ab = (AbstractButton)ctor.newInstance(

      new Object[]{ids[i]});

      } catch(Exception ex) {

      System.out.println("can't create " +

      bClass);

      }

      bg.add(ab);

      jp.add(ab);

      }

      return jp;

      }

      public ButtonGroups() {

      add(makeBPanel(JButton.class, ids));

      add(makeBPanel(JToggleButton.class, ids));

      add(makeBPanel(JCheckBox.class, ids));

      add(makeBPanel(JRadioButton.class, ids));

      }

      public static void main(String args[]) {

      Show.inFrame(new ButtonGroups(), 500, 300);

      }

      } ///:~

      边框标题由类名剔除了所有的路径信息而来。AbstractButton初始化为一个JButton,JButtonr的标签发生“失效”,因此如果我们忽略这个异常信息,我们会在屏幕上一直看到这个问题。getConstructor()方法产生了一个通过getConstructor()方法安放自变量数组类型到类数组的构建器对象,然后所有我们要做的就是调用newInstance(),通过它一个数组对象包含我们当前的自变量——在这种例子中,就是ids数组中的字符串。

      这样增加了一些更复杂的内容到这个简单的程序中。为了使“异或”行为拥有按钮,我们创建一个按钮组并增加每个按钮到我们所需的组中。当我们运行这个程序时,我们会注意到所有的按钮除了JButton都会向我们展示“异或”行为。

课课家教育

未登录

1