JavaFX UI控制元件教程(五)之Radio Button
本章討論單選按鈕控制元件和RadioButton
類,該類的一個專門實現ToggleButton
。
可以選擇或取消選擇單選按鈕控制元件。通常,單選按鈕組合成一個組,其中一次只能選擇一個按鈕。此行為將它們與切換按鈕區分開來,因為組中的所有切換按鈕都可以處於取消選擇狀態。
圖4-1顯示了RadioButton
樣本的三個螢幕截圖,其中三個單選按鈕新增到一個組中。
圖4-1 RadioButton示例
請閱讀以下段落,以瞭解有關如何在應用程式中實現單選按鈕的更多資訊。
建立單選按鈕
JavaFX SDK包中提供的RadioButton
類提供javafx.scene.control
setText
方法設定的。rb2的文字標題在相應的建構函式中定義。
例4-1建立單選按鈕
//A radio button with an empty string for its label RadioButton rb1 = new RadioButton(); //Setting a text label rb1.setText("Home"); //A radio button with the specified label RadioButton rb2 = new RadioButton("Calendar");
您可以使用該setSelected
方法顯式選擇一個單選按鈕,並將其值指定為true
。如果需要檢查使用者是否選擇了特定的單選按鈕,請應用該isSelected
方法。
由於RadioButton
該類是類的擴充套件,因此Labeled
您不僅可以指定文字標題,還可以指定影象。使用該setGraphic
方法指定影象。示例4-2演示瞭如何在應用程式中實現圖形單選按鈕。
示例4-2建立圖形單選按鈕
Image image = new Image(getClass().getResourceAsStream("ok.jpg")); RadioButton rb = new RadioButton("Agree"); rb.setGraphic(new ImageView(image));
向組新增單選按鈕
單選按鈕通常用於組中以呈現多個互斥選項。該ToggleGroup
物件提供對與其關聯的所有單選按鈕的引用並對其進行管理,以便一次只能選擇一個單選按鈕。例4-3建立一個切換組,建立三個單選按鈕,將每個單選按鈕新增到切換組,並指定應用程式啟動時應選擇哪個按鈕。
示例4-3建立一組單選按鈕
final ToggleGroup group = new ToggleGroup();
RadioButton rb1 = new RadioButton("Home");
rb1.setToggleGroup(group);
rb1.setSelected(true);
RadioButton rb2 = new RadioButton("Calendar");
rb2.setToggleGroup(group);
RadioButton rb3 = new RadioButton("Contacts");
rb3.setToggleGroup(group);
當使用佈局容器佈置這些單選按鈕並將其新增到應用程式的內容時,輸出應類似於圖4-2。
圖4-2組合中的三個單選按鈕
處理單選按鈕的事件
通常,應用程式在選擇組中的某個單選按鈕時執行操作。檢視示例4-4中的程式碼片段,瞭解如何根據選擇的單選按鈕更改圖示。
示例4-4單選按鈕的處理操作
ImageView image = new ImageView();
rb1.setUserData("Home")
rb2.setUserData("Calendar");
rb3.setUserData("Contacts");
final ToggleGroup group = new ToggleGroup();
group.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){
public void changed(ObservableValue<? extends Toggle> ov,
Toggle old_toggle, Toggle new_toggle) {
if (group.getSelectedToggle() != null) {
final Image image = new Image(
getClass().getResourceAsStream(
group.getSelectedToggle().getUserData().toString() +
".jpg"
)
);
icon.setImage(image);
}
}
});
為每個單選按鈕分配了使用者資料。該ChangeListener<Toggle>
物件檢查組中的選定切換。它使用該getSelectedToggle
方法來識別當前選擇的單選按鈕,並通過呼叫該getUserData
方法來提取其使用者資料。然後應用使用者資料來構造要載入的影象檔名。
例如,當選擇rb3時,該getSelectedToggle
方法返回“rb3”,該getUserData
方法返回“Contacts”。因此,該getResourceAsStream
方法接收值“Contacts.jpg”。應用程式輸出如圖4-1所示。
請求關注單選按鈕
在單選按鈕組中,預設情況下第一個按鈕最初具有焦點。如果將該setSelected
方法應用於組中的第二個單選按鈕,則應該會得到如圖4-3所示的結果。
圖4-3預設焦點設定
選擇第二個單選按鈕,第一個按鈕保持對焦。使用該requestFocus
功能更改焦點,如例4-5所示。
例4-5請求第二個單選按鈕的焦點
rb2.setSelected(true);
rb2.requestFocus();
應用時,此程式碼生成如圖4-4所示的結果。
圖4-4設定所選單選按鈕的焦點
相關的API文件