JavaFX UI控件教程(五)之Radio Button
翻譯自??Radio Button
本章討論單選按鈕控件和RadioButton類,該類的一個專門實現ToggleButton。
可以選擇或取消選擇單選按鈕控件。通常,單選按鈕組合成一個組,其中一次只能選擇一個按鈕。此行為將它們與切換按鈕區分開來,因為組中的所有切換按鈕都可以處于取消選擇狀態。
圖4-1顯示了RadioButton樣本的三個屏幕截圖,其中三個單選按鈕添加到一個組中。
圖4-1 RadioButton示例
請閱讀以下段落,以了解有關如何在應用程序中實現單選按鈕的更多信息。
?
創建單選按鈕
JavaFX SDK包中提供的RadioButton類提供javafx.scene.control了兩個構造函數,您可以使用它們創建單選按鈕。例4-1顯示了兩個單選按鈕。沒有參數的構造函數用于創建rb1。此單選按鈕的文本標題是使用該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文檔?
-
RadioButton
-
Labeled
-
ToggleGroup
總結
以上是生活随笔為你收集整理的JavaFX UI控件教程(五)之Radio Button的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在查看QQ空间发布过的照片
- 下一篇: 苹果手机静音模式闹钟会响吗