Vượt qua đối số boolean python

Để tạo một nút, bạn có thể khởi tạo một trong nhiều lớp bắt nguồn từ lớp

//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
2. Bảng sau đây hiển thị các lớp con
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
2 do Swing định nghĩa mà bạn có thể muốn sử dụng

Ghi chú. Nếu bạn muốn gom nhóm nút vào một hàng hoặc một cột thì bạn xem qua thanh công cụ

Đầu tiên, phần này giải thích API nút cơ bản mà

//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
2 định nghĩa — và do đó, tất cả các nút Swing đều có điểm chung. Tiếp theo, nó mô tả một lượng nhỏ API mà
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
5 thêm vào
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
2. Sau đó, phần này chỉ cho bạn cách sử dụng API chuyên dụng để triển khai các hộp kiểm và nút radio

Đây là hình ảnh của một ứng dụng hiển thị ba nút

Thử cái này.  

  1. Nhấp vào nút Khởi chạy để chạy Trình diễn Nút bằng cách sử dụng Java™ Web Start [tải xuống JDK 7 trở lên]. Ngoài ra, để tự biên dịch và chạy ví dụ, hãy tham khảo chỉ mục ví dụ
  2. Nhấp vào nút bên trái.
    Nó vô hiệu hóa nút ở giữa [và chính nó, vì nó không còn hữu ích] và kích hoạt nút bên phải.
  3. Nhấp vào nút bên phải.
    Nó bật nút giữa và nút bên trái và tự tắt.

Như ví dụ về

//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
7 cho thấy, nút Swing có thể hiển thị cả văn bản và hình ảnh. Trong
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
7, mỗi nút có văn bản ở một vị trí khác, so với hình ảnh của nó. Chữ cái được gạch chân trong văn bản của mỗi nút hiển thị cách ghi nhớ — cách thay thế bàn phím — cho mỗi nút. Trong hầu hết giao diện, người dùng có thể nhấp vào một nút bằng cách nhấn phím Alt và từ khóa ghi nhớ. Ví dụ: Alt-M sẽ nhấp vào nút Giữa trong ButtonDemo

Khi một nút bị tắt, giao diện sẽ tự động tạo ra giao diện bị tắt của nút đó. Tuy nhiên, bạn có thể cung cấp một hình ảnh để thay thế cho hình ảnh bình thường. Ví dụ: bạn có thể cung cấp các phiên bản màu xám của hình ảnh được sử dụng ở các nút bên trái và bên phải

Cách bạn triển khai xử lý sự kiện tùy thuộc vào loại nút bạn sử dụng và cách bạn sử dụng nút đó. Nói chung, bạn triển khai một trình lắng nghe hành động, được thông báo mỗi khi người dùng nhấp vào nút. Đối với hộp kiểm, bạn thường sử dụng trình nghe mục, được thông báo khi hộp kiểm được chọn hoặc bỏ chọn

Dưới đây là mã từ

//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
1 tạo các nút trong ví dụ trước và phản ứng với các lần nhấp vào nút. Mã in đậm là mã sẽ vẫn còn nếu các nút không có hình ảnh

//In initialization code:
    ImageIcon leftButtonIcon = createImageIcon["images/right.gif"];
    ImageIcon middleButtonIcon = createImageIcon["images/middle.gif"];
    ImageIcon rightButtonIcon = createImageIcon["images/left.gif"];

    b1 = new JButton["Disable middle button", leftButtonIcon];
    b1.setVerticalTextPosition[AbstractButton.CENTER];
    b1.setHorizontalTextPosition[AbstractButton.LEADING]; //aka LEFT, for left-to-right locales
    b1.setMnemonic[KeyEvent.VK_D];
    b1.setActionCommand["disable"];

    b2 = new JButton["Middle button", middleButtonIcon];
    b2.setVerticalTextPosition[AbstractButton.BOTTOM];
    b2.setHorizontalTextPosition[AbstractButton.CENTER];
    b2.setMnemonic[KeyEvent.VK_M];

    b3 = new JButton["Enable middle button", rightButtonIcon];
    //Use the default text position of CENTER, TRAILING [RIGHT].
    b3.setMnemonic[KeyEvent.VK_E];
    b3.setActionCommand["enable"];
    b3.setEnabled[false];

    //Listen for actions on buttons 1 and 3.
    b1.addActionListener[this];
    b3.addActionListener[this];

    b1.setToolTipText["Click this button to disable "
                      + "the middle button."];
    b2.setToolTipText["This middle button does nothing "
                      + "when you click it."];
    b3.setToolTipText["Click this button to enable the "
                      + "middle button."];
    ...
}

public void actionPerformed[ActionEvent e] {
    if ["disable".equals[e.getActionCommand[]]] {
        b2.setEnabled[false];
        b1.setEnabled[false];
        b3.setEnabled[true];
    } else {
        b2.setEnabled[true];
        b1.setEnabled[true];
        b3.setEnabled[false];
    }
} 

protected static ImageIcon createImageIcon[String path] {
    java.net.URL imgURL = ButtonDemo.class.getResource[path];
    ...//error handling omitted for clarity...
    return new ImageIcon[imgURL];
}

Các nút thông thường — các đối tượng

//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
5 — có nhiều chức năng hơn một chút so với lớp
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
2 cung cấp. Bạn có thể đặt
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
5 làm nút mặc định

Tối đa một nút trong vùng chứa cấp cao nhất có thể là nút mặc định. Nút mặc định thường có giao diện được đánh dấu và hoạt động được nhấp vào bất cứ khi nào bộ chứa cấp cao nhất có tiêu điểm bàn phím và người dùng nhấn phím Return hoặc Enter. Đây là hình ảnh của hộp thoại, được triển khai trong ví dụ ListDialog, trong đó nút Set là nút mặc định

Bạn đặt nút mặc định bằng cách gọi phương thức

//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
5 trên ngăn gốc của bộ chứa cấp cao nhất. Đây là mã thiết lập nút mặc định cho ví dụ về
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
6

//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];

Việc triển khai chính xác tính năng nút mặc định tùy thuộc vào giao diện. Ví dụ: trong giao diện Windows, nút mặc định thay đổi thành bất kỳ nút nào có tiêu điểm, do đó nhấn Enter sẽ bấm vào nút tiêu điểm. Khi không có nút nào có tiêu điểm, nút ban đầu bạn đã chỉ định làm nút mặc định sẽ trở thành nút mặc định một lần nữa

Lớp

//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
7 cung cấp hỗ trợ cho các nút hộp kiểm. Bạn cũng có thể đặt các hộp kiểm trong menu, sử dụng lớp
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
8. Bởi vì
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
7 và
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
8 kế thừa từ
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
2, các hộp kiểm Swing có tất cả các đặc điểm của nút thông thường, như đã thảo luận trước đó trong phần này. Ví dụ: bạn có thể chỉ định hình ảnh sẽ được sử dụng trong hộp kiểm

Các hộp kiểm tương tự như các nút radio nhưng mô hình lựa chọn của chúng thì khác, theo quy ước. Có thể chọn bất kỳ số hộp kiểm nào trong một nhóm — không, một số hoặc tất cả —. Mặt khác, một nhóm các nút radio chỉ có thể có một nút được chọn

Đây là hình ảnh của một ứng dụng sử dụng bốn hộp kiểm để tùy chỉnh phim hoạt hình

Thử cái này.  

  1. Nhấp vào nút Khởi chạy để chạy Bản trình diễn CheckBox bằng Java™ Web Start [tải xuống JDK 7 trở lên]. Ngoài ra, để tự biên dịch và chạy ví dụ, hãy tham khảo chỉ mục ví dụ
  2. Nhấp vào nút Chin hoặc nhấn Alt-c.
    Hộp kiểm Cằm không được chọn và cằm biến mất khỏi ảnh. Các hộp kiểm khác vẫn được chọn. Ứng dụng này có một trình nghe mục nghe tất cả các hộp kiểm. Mỗi khi người nghe mục nhận được một sự kiện, ứng dụng sẽ tải một hình ảnh mới phản ánh trạng thái hiện tại của các hộp kiểm.

Một hộp kiểm tạo một sự kiện mục và một sự kiện hành động cho mỗi lần nhấp. Thông thường, bạn chỉ lắng nghe các sự kiện của mục vì chúng cho phép bạn xác định xem nhấp chuột đã chọn hay bỏ chọn hộp kiểm. Dưới đây là mã từ

//In initialization code:
    chinButton = new JCheckBox["Chin"];
    chinButton.setMnemonic[KeyEvent.VK_C]; 
    chinButton.setSelected[true];

    glassesButton = new JCheckBox["Glasses"];
    glassesButton.setMnemonic[KeyEvent.VK_G]; 
    glassesButton.setSelected[true];

    hairButton = new JCheckBox["Hair"];
    hairButton.setMnemonic[KeyEvent.VK_H]; 
    hairButton.setSelected[true];

    teethButton = new JCheckBox["Teeth"];
    teethButton.setMnemonic[KeyEvent.VK_T]; 
    teethButton.setSelected[true];

    //Register a listener for the check boxes.
    chinButton.addItemListener[this];
    glassesButton.addItemListener[this];
    hairButton.addItemListener[this];
    teethButton.addItemListener[this];
...
public void itemStateChanged[ItemEvent e] {
    ...
    Object source = e.getItemSelectable[];

    if [source == chinButton] {
        //...make a note of it...
    } else if [source == glassesButton] {
        //...make a note of it...
    } else if [source == hairButton] {
        //...make a note of it...
    } else if [source == teethButton] {
        //...make a note of it...
    }

    if [e.getStateChange[] == ItemEvent.DESELECTED]
        //...make a note of it...
    ...
    updatePicture[];
}
2 tạo các hộp kiểm trong ví dụ trước và phản ứng với các nhấp chuột

//In initialization code:
    chinButton = new JCheckBox["Chin"];
    chinButton.setMnemonic[KeyEvent.VK_C]; 
    chinButton.setSelected[true];

    glassesButton = new JCheckBox["Glasses"];
    glassesButton.setMnemonic[KeyEvent.VK_G]; 
    glassesButton.setSelected[true];

    hairButton = new JCheckBox["Hair"];
    hairButton.setMnemonic[KeyEvent.VK_H]; 
    hairButton.setSelected[true];

    teethButton = new JCheckBox["Teeth"];
    teethButton.setMnemonic[KeyEvent.VK_T]; 
    teethButton.setSelected[true];

    //Register a listener for the check boxes.
    chinButton.addItemListener[this];
    glassesButton.addItemListener[this];
    hairButton.addItemListener[this];
    teethButton.addItemListener[this];
...
public void itemStateChanged[ItemEvent e] {
    ...
    Object source = e.getItemSelectable[];

    if [source == chinButton] {
        //...make a note of it...
    } else if [source == glassesButton] {
        //...make a note of it...
    } else if [source == hairButton] {
        //...make a note of it...
    } else if [source == teethButton] {
        //...make a note of it...
    }

    if [e.getStateChange[] == ItemEvent.DESELECTED]
        //...make a note of it...
    ...
    updatePicture[];
}

Các nút radio là một nhóm các nút trong đó theo quy ước, mỗi lần chỉ có thể chọn một nút. Bản phát hành Swing hỗ trợ các nút radio với lớp

//In initialization code:
    chinButton = new JCheckBox["Chin"];
    chinButton.setMnemonic[KeyEvent.VK_C]; 
    chinButton.setSelected[true];

    glassesButton = new JCheckBox["Glasses"];
    glassesButton.setMnemonic[KeyEvent.VK_G]; 
    glassesButton.setSelected[true];

    hairButton = new JCheckBox["Hair"];
    hairButton.setMnemonic[KeyEvent.VK_H]; 
    hairButton.setSelected[true];

    teethButton = new JCheckBox["Teeth"];
    teethButton.setMnemonic[KeyEvent.VK_T]; 
    teethButton.setSelected[true];

    //Register a listener for the check boxes.
    chinButton.addItemListener[this];
    glassesButton.addItemListener[this];
    hairButton.addItemListener[this];
    teethButton.addItemListener[this];
...
public void itemStateChanged[ItemEvent e] {
    ...
    Object source = e.getItemSelectable[];

    if [source == chinButton] {
        //...make a note of it...
    } else if [source == glassesButton] {
        //...make a note of it...
    } else if [source == hairButton] {
        //...make a note of it...
    } else if [source == teethButton] {
        //...make a note of it...
    }

    if [e.getStateChange[] == ItemEvent.DESELECTED]
        //...make a note of it...
    ...
    updatePicture[];
}
3 và
//In initialization code:
    chinButton = new JCheckBox["Chin"];
    chinButton.setMnemonic[KeyEvent.VK_C]; 
    chinButton.setSelected[true];

    glassesButton = new JCheckBox["Glasses"];
    glassesButton.setMnemonic[KeyEvent.VK_G]; 
    glassesButton.setSelected[true];

    hairButton = new JCheckBox["Hair"];
    hairButton.setMnemonic[KeyEvent.VK_H]; 
    hairButton.setSelected[true];

    teethButton = new JCheckBox["Teeth"];
    teethButton.setMnemonic[KeyEvent.VK_T]; 
    teethButton.setSelected[true];

    //Register a listener for the check boxes.
    chinButton.addItemListener[this];
    glassesButton.addItemListener[this];
    hairButton.addItemListener[this];
    teethButton.addItemListener[this];
...
public void itemStateChanged[ItemEvent e] {
    ...
    Object source = e.getItemSelectable[];

    if [source == chinButton] {
        //...make a note of it...
    } else if [source == glassesButton] {
        //...make a note of it...
    } else if [source == hairButton] {
        //...make a note of it...
    } else if [source == teethButton] {
        //...make a note of it...
    }

    if [e.getStateChange[] == ItemEvent.DESELECTED]
        //...make a note of it...
    ...
    updatePicture[];
}
4. Để đặt một nút radio trong menu, hãy sử dụng lớp
//In initialization code:
    chinButton = new JCheckBox["Chin"];
    chinButton.setMnemonic[KeyEvent.VK_C]; 
    chinButton.setSelected[true];

    glassesButton = new JCheckBox["Glasses"];
    glassesButton.setMnemonic[KeyEvent.VK_G]; 
    glassesButton.setSelected[true];

    hairButton = new JCheckBox["Hair"];
    hairButton.setMnemonic[KeyEvent.VK_H]; 
    hairButton.setSelected[true];

    teethButton = new JCheckBox["Teeth"];
    teethButton.setMnemonic[KeyEvent.VK_T]; 
    teethButton.setSelected[true];

    //Register a listener for the check boxes.
    chinButton.addItemListener[this];
    glassesButton.addItemListener[this];
    hairButton.addItemListener[this];
    teethButton.addItemListener[this];
...
public void itemStateChanged[ItemEvent e] {
    ...
    Object source = e.getItemSelectable[];

    if [source == chinButton] {
        //...make a note of it...
    } else if [source == glassesButton] {
        //...make a note of it...
    } else if [source == hairButton] {
        //...make a note of it...
    } else if [source == teethButton] {
        //...make a note of it...
    }

    if [e.getStateChange[] == ItemEvent.DESELECTED]
        //...make a note of it...
    ...
    updatePicture[];
}
5. Các cách khác để hiển thị một trong nhiều lựa chọn là hộp tổ hợp và danh sách. Các nút radio trông tương tự như các hộp kiểm, nhưng theo quy ước, các hộp kiểm không đặt giới hạn về số lượng mục có thể được chọn cùng một lúc

Bởi vì

//In initialization code:
    chinButton = new JCheckBox["Chin"];
    chinButton.setMnemonic[KeyEvent.VK_C]; 
    chinButton.setSelected[true];

    glassesButton = new JCheckBox["Glasses"];
    glassesButton.setMnemonic[KeyEvent.VK_G]; 
    glassesButton.setSelected[true];

    hairButton = new JCheckBox["Hair"];
    hairButton.setMnemonic[KeyEvent.VK_H]; 
    hairButton.setSelected[true];

    teethButton = new JCheckBox["Teeth"];
    teethButton.setMnemonic[KeyEvent.VK_T]; 
    teethButton.setSelected[true];

    //Register a listener for the check boxes.
    chinButton.addItemListener[this];
    glassesButton.addItemListener[this];
    hairButton.addItemListener[this];
    teethButton.addItemListener[this];
...
public void itemStateChanged[ItemEvent e] {
    ...
    Object source = e.getItemSelectable[];

    if [source == chinButton] {
        //...make a note of it...
    } else if [source == glassesButton] {
        //...make a note of it...
    } else if [source == hairButton] {
        //...make a note of it...
    } else if [source == teethButton] {
        //...make a note of it...
    }

    if [e.getStateChange[] == ItemEvent.DESELECTED]
        //...make a note of it...
    ...
    updatePicture[];
}
3 kế thừa từ
//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
2, các nút radio Swing có tất cả các đặc điểm của nút thông thường, như đã thảo luận trước đó trong phần này. Ví dụ: bạn có thể chỉ định hình ảnh được hiển thị trong nút radio

Đây là hình ảnh của một ứng dụng sử dụng năm nút radio để cho phép bạn chọn loại thú cưng nào được hiển thị

Thử cái này.  

  1. Nhấp vào nút Khởi chạy để chạy Trình diễn RadioButton bằng Java™ Web Start [tải xuống JDK 7 trở lên]. Ngoài ra, để tự biên dịch và chạy ví dụ, hãy tham khảo chỉ mục ví dụ
  2. Nhấp vào nút Con chó hoặc nhấn Alt-d.
    Nút Con chó được chọn, khiến nút Con chim không được chọn. Hình ảnh chuyển từ một con chim sang một con chó. Ứng dụng này có một trình nghe hành động nghe tất cả các nút radio. Mỗi khi người nghe hành động nhận được một sự kiện, ứng dụng sẽ hiển thị hình ảnh cho nút radio vừa được nhấp.

Mỗi lần người dùng nhấp vào nút radio [ngay cả khi nó đã được chọn], nút này sẽ kích hoạt một sự kiện hành động. Một hoặc hai sự kiện mục cũng xảy ra — một sự kiện từ nút vừa được chọn và một sự kiện khác từ nút đã mất lựa chọn [nếu có]. Thông thường, bạn xử lý các lần nhấp vào nút radio bằng trình nghe hành động

Dưới đây là mã từ

//In initialization code:
    chinButton = new JCheckBox["Chin"];
    chinButton.setMnemonic[KeyEvent.VK_C]; 
    chinButton.setSelected[true];

    glassesButton = new JCheckBox["Glasses"];
    glassesButton.setMnemonic[KeyEvent.VK_G]; 
    glassesButton.setSelected[true];

    hairButton = new JCheckBox["Hair"];
    hairButton.setMnemonic[KeyEvent.VK_H]; 
    hairButton.setSelected[true];

    teethButton = new JCheckBox["Teeth"];
    teethButton.setMnemonic[KeyEvent.VK_T]; 
    teethButton.setSelected[true];

    //Register a listener for the check boxes.
    chinButton.addItemListener[this];
    glassesButton.addItemListener[this];
    hairButton.addItemListener[this];
    teethButton.addItemListener[this];
...
public void itemStateChanged[ItemEvent e] {
    ...
    Object source = e.getItemSelectable[];

    if [source == chinButton] {
        //...make a note of it...
    } else if [source == glassesButton] {
        //...make a note of it...
    } else if [source == hairButton] {
        //...make a note of it...
    } else if [source == teethButton] {
        //...make a note of it...
    }

    if [e.getStateChange[] == ItemEvent.DESELECTED]
        //...make a note of it...
    ...
    updatePicture[];
}
8 tạo các nút radio trong ví dụ trước và phản ứng với các nhấp chuột

//In initialization code:
    ImageIcon leftButtonIcon = createImageIcon["images/right.gif"];
    ImageIcon middleButtonIcon = createImageIcon["images/middle.gif"];
    ImageIcon rightButtonIcon = createImageIcon["images/left.gif"];

    b1 = new JButton["Disable middle button", leftButtonIcon];
    b1.setVerticalTextPosition[AbstractButton.CENTER];
    b1.setHorizontalTextPosition[AbstractButton.LEADING]; //aka LEFT, for left-to-right locales
    b1.setMnemonic[KeyEvent.VK_D];
    b1.setActionCommand["disable"];

    b2 = new JButton["Middle button", middleButtonIcon];
    b2.setVerticalTextPosition[AbstractButton.BOTTOM];
    b2.setHorizontalTextPosition[AbstractButton.CENTER];
    b2.setMnemonic[KeyEvent.VK_M];

    b3 = new JButton["Enable middle button", rightButtonIcon];
    //Use the default text position of CENTER, TRAILING [RIGHT].
    b3.setMnemonic[KeyEvent.VK_E];
    b3.setActionCommand["enable"];
    b3.setEnabled[false];

    //Listen for actions on buttons 1 and 3.
    b1.addActionListener[this];
    b3.addActionListener[this];

    b1.setToolTipText["Click this button to disable "
                      + "the middle button."];
    b2.setToolTipText["This middle button does nothing "
                      + "when you click it."];
    b3.setToolTipText["Click this button to enable the "
                      + "middle button."];
    ...
}

public void actionPerformed[ActionEvent e] {
    if ["disable".equals[e.getActionCommand[]]] {
        b2.setEnabled[false];
        b1.setEnabled[false];
        b3.setEnabled[true];
    } else {
        b2.setEnabled[true];
        b1.setEnabled[true];
        b3.setEnabled[false];
    }
} 

protected static ImageIcon createImageIcon[String path] {
    java.net.URL imgURL = ButtonDemo.class.getResource[path];
    ...//error handling omitted for clarity...
    return new ImageIcon[imgURL];
}
6

Đối với mỗi nhóm nút radio, bạn cần tạo một phiên bản

//In initialization code:
    chinButton = new JCheckBox["Chin"];
    chinButton.setMnemonic[KeyEvent.VK_C]; 
    chinButton.setSelected[true];

    glassesButton = new JCheckBox["Glasses"];
    glassesButton.setMnemonic[KeyEvent.VK_G]; 
    glassesButton.setSelected[true];

    hairButton = new JCheckBox["Hair"];
    hairButton.setMnemonic[KeyEvent.VK_H]; 
    hairButton.setSelected[true];

    teethButton = new JCheckBox["Teeth"];
    teethButton.setMnemonic[KeyEvent.VK_T]; 
    teethButton.setSelected[true];

    //Register a listener for the check boxes.
    chinButton.addItemListener[this];
    glassesButton.addItemListener[this];
    hairButton.addItemListener[this];
    teethButton.addItemListener[this];
...
public void itemStateChanged[ItemEvent e] {
    ...
    Object source = e.getItemSelectable[];

    if [source == chinButton] {
        //...make a note of it...
    } else if [source == glassesButton] {
        //...make a note of it...
    } else if [source == hairButton] {
        //...make a note of it...
    } else if [source == teethButton] {
        //...make a note of it...
    }

    if [e.getStateChange[] == ItemEvent.DESELECTED]
        //...make a note of it...
    ...
    updatePicture[];
}
4 và thêm từng nút radio vào đó.
//In initialization code:
    chinButton = new JCheckBox["Chin"];
    chinButton.setMnemonic[KeyEvent.VK_C]; 
    chinButton.setSelected[true];

    glassesButton = new JCheckBox["Glasses"];
    glassesButton.setMnemonic[KeyEvent.VK_G]; 
    glassesButton.setSelected[true];

    hairButton = new JCheckBox["Hair"];
    hairButton.setMnemonic[KeyEvent.VK_H]; 
    hairButton.setSelected[true];

    teethButton = new JCheckBox["Teeth"];
    teethButton.setMnemonic[KeyEvent.VK_T]; 
    teethButton.setSelected[true];

    //Register a listener for the check boxes.
    chinButton.addItemListener[this];
    glassesButton.addItemListener[this];
    hairButton.addItemListener[this];
    teethButton.addItemListener[this];
...
public void itemStateChanged[ItemEvent e] {
    ...
    Object source = e.getItemSelectable[];

    if [source == chinButton] {
        //...make a note of it...
    } else if [source == glassesButton] {
        //...make a note of it...
    } else if [source == hairButton] {
        //...make a note of it...
    } else if [source == teethButton] {
        //...make a note of it...
    }

    if [e.getStateChange[] == ItemEvent.DESELECTED]
        //...make a note of it...
    ...
    updatePicture[];
}
4 đảm nhiệm việc bỏ chọn nút đã chọn trước đó khi người dùng chọn một nút khác trong nhóm

Nói chung, bạn nên khởi tạo một nhóm các nút radio để một nút được chọn. Tuy nhiên, API không thực thi quy tắc này — một nhóm nút radio có thể không có lựa chọn ban đầu. Khi người dùng đã thực hiện lựa chọn, chính xác một nút sẽ được chọn từ đó trở đi

Các bảng sau liệt kê API liên quan đến nút thường được sử dụng. Các phương thức khác mà bạn có thể gọi, chẳng hạn như

//In initialization code:
    ImageIcon leftButtonIcon = createImageIcon["images/right.gif"];
    ImageIcon middleButtonIcon = createImageIcon["images/middle.gif"];
    ImageIcon rightButtonIcon = createImageIcon["images/left.gif"];

    b1 = new JButton["Disable middle button", leftButtonIcon];
    b1.setVerticalTextPosition[AbstractButton.CENTER];
    b1.setHorizontalTextPosition[AbstractButton.LEADING]; //aka LEFT, for left-to-right locales
    b1.setMnemonic[KeyEvent.VK_D];
    b1.setActionCommand["disable"];

    b2 = new JButton["Middle button", middleButtonIcon];
    b2.setVerticalTextPosition[AbstractButton.BOTTOM];
    b2.setHorizontalTextPosition[AbstractButton.CENTER];
    b2.setMnemonic[KeyEvent.VK_M];

    b3 = new JButton["Enable middle button", rightButtonIcon];
    //Use the default text position of CENTER, TRAILING [RIGHT].
    b3.setMnemonic[KeyEvent.VK_E];
    b3.setActionCommand["enable"];
    b3.setEnabled[false];

    //Listen for actions on buttons 1 and 3.
    b1.addActionListener[this];
    b3.addActionListener[this];

    b1.setToolTipText["Click this button to disable "
                      + "the middle button."];
    b2.setToolTipText["This middle button does nothing "
                      + "when you click it."];
    b3.setToolTipText["Click this button to enable the "
                      + "middle button."];
    ...
}

public void actionPerformed[ActionEvent e] {
    if ["disable".equals[e.getActionCommand[]]] {
        b2.setEnabled[false];
        b1.setEnabled[false];
        b3.setEnabled[true];
    } else {
        b2.setEnabled[true];
        b1.setEnabled[true];
        b3.setEnabled[false];
    }
} 

protected static ImageIcon createImageIcon[String path] {
    java.net.URL imgURL = ButtonDemo.class.getResource[path];
    ...//error handling omitted for clarity...
    return new ImageIcon[imgURL];
}
61 và
//In initialization code:
    ImageIcon leftButtonIcon = createImageIcon["images/right.gif"];
    ImageIcon middleButtonIcon = createImageIcon["images/middle.gif"];
    ImageIcon rightButtonIcon = createImageIcon["images/left.gif"];

    b1 = new JButton["Disable middle button", leftButtonIcon];
    b1.setVerticalTextPosition[AbstractButton.CENTER];
    b1.setHorizontalTextPosition[AbstractButton.LEADING]; //aka LEFT, for left-to-right locales
    b1.setMnemonic[KeyEvent.VK_D];
    b1.setActionCommand["disable"];

    b2 = new JButton["Middle button", middleButtonIcon];
    b2.setVerticalTextPosition[AbstractButton.BOTTOM];
    b2.setHorizontalTextPosition[AbstractButton.CENTER];
    b2.setMnemonic[KeyEvent.VK_M];

    b3 = new JButton["Enable middle button", rightButtonIcon];
    //Use the default text position of CENTER, TRAILING [RIGHT].
    b3.setMnemonic[KeyEvent.VK_E];
    b3.setActionCommand["enable"];
    b3.setEnabled[false];

    //Listen for actions on buttons 1 and 3.
    b1.addActionListener[this];
    b3.addActionListener[this];

    b1.setToolTipText["Click this button to disable "
                      + "the middle button."];
    b2.setToolTipText["This middle button does nothing "
                      + "when you click it."];
    b3.setToolTipText["Click this button to enable the "
                      + "middle button."];
    ...
}

public void actionPerformed[ActionEvent e] {
    if ["disable".equals[e.getActionCommand[]]] {
        b2.setEnabled[false];
        b1.setEnabled[false];
        b3.setEnabled[true];
    } else {
        b2.setEnabled[true];
        b1.setEnabled[true];
        b3.setEnabled[false];
    }
} 

protected static ImageIcon createImageIcon[String path] {
    java.net.URL imgURL = ButtonDemo.class.getResource[path];
    ...//error handling omitted for clarity...
    return new ImageIcon[imgURL];
}
62, được liệt kê trong các bảng API trong Lớp JComponent

API để sử dụng các nút thuộc các danh mục này

Các ví dụ sau sử dụng các nút. Ngoài ra, hãy xem Ví dụ sử dụng Thanh công cụ, liệt kê các chương trình thêm đối tượng

//In the constructor for a JDialog subclass:
getRootPane[].setDefaultButton[setButton];
5 vào
//In initialization code:
    ImageIcon leftButtonIcon = createImageIcon["images/right.gif"];
    ImageIcon middleButtonIcon = createImageIcon["images/middle.gif"];
    ImageIcon rightButtonIcon = createImageIcon["images/left.gif"];

    b1 = new JButton["Disable middle button", leftButtonIcon];
    b1.setVerticalTextPosition[AbstractButton.CENTER];
    b1.setHorizontalTextPosition[AbstractButton.LEADING]; //aka LEFT, for left-to-right locales
    b1.setMnemonic[KeyEvent.VK_D];
    b1.setActionCommand["disable"];

    b2 = new JButton["Middle button", middleButtonIcon];
    b2.setVerticalTextPosition[AbstractButton.BOTTOM];
    b2.setHorizontalTextPosition[AbstractButton.CENTER];
    b2.setMnemonic[KeyEvent.VK_M];

    b3 = new JButton["Enable middle button", rightButtonIcon];
    //Use the default text position of CENTER, TRAILING [RIGHT].
    b3.setMnemonic[KeyEvent.VK_E];
    b3.setActionCommand["enable"];
    b3.setEnabled[false];

    //Listen for actions on buttons 1 and 3.
    b1.addActionListener[this];
    b3.addActionListener[this];

    b1.setToolTipText["Click this button to disable "
                      + "the middle button."];
    b2.setToolTipText["This middle button does nothing "
                      + "when you click it."];
    b3.setToolTipText["Click this button to enable the "
                      + "middle button."];
    ...
}

public void actionPerformed[ActionEvent e] {
    if ["disable".equals[e.getActionCommand[]]] {
        b2.setEnabled[false];
        b1.setEnabled[false];
        b3.setEnabled[true];
    } else {
        b2.setEnabled[true];
        b1.setEnabled[true];
        b3.setEnabled[false];
    }
} 

protected static ImageIcon createImageIcon[String path] {
    java.net.URL imgURL = ButtonDemo.class.getResource[path];
    ...//error handling omitted for clarity...
    return new ImageIcon[imgURL];
}
64

Chủ Đề