程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java按鈕組的制作

java按鈕組的制作

編輯:關於JAVA

如果我們想單選鈕保持“異或”狀態,我們必須增加它們到一個按鈕組中,這幾乎同老AWT中的方法相同但更加的靈活。在下面將要證明的程序例子是,一些AbstruactButton能被增加到一個ButtonGroup中。
為避免重復一些代碼,這個程序利用映射來生不同類型的按鈕組。這會在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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved