當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JavaFX 類 ToggleButton用法及代碼示例


ToggleButton是具有選擇函數的特殊控件。本質上,ToggleButton的呈現方式與Button類似,但是這兩種是不同類型的控件。按鈕是“command”按鈕,單擊該按鈕可調用函數。但是ToggleButton是帶有布爾值的控件,指示是否已選擇它。它繼承了ButtonBase類。

ToggleButton也可以成組放置。默認情況下,ToggleButton不在組中。分組時,一次隻能選擇該組中的一個ToggleButton。要將兩個ToggleButtons放在同一組中,隻需為ToggleGroup分配兩個相同的值即可。與RadioButtons不同,ToggleGroup中的ToggleButtons不會嘗試在組中強製至少選擇一個ToggleButton。意味著,如果選擇了ToggleButton,則單擊它會使其變為未選中狀態。使用RadioButton,單擊組中的所選按鈕將無效。

該類的構造函數:


  1. ToggleButton():創建一個帶有空字符串標簽的切換按鈕。
  2. ToggleButton(String txt):創建一個以指定文本作為標簽的切換按鈕。
  3. ToggleButton(String txt, Node graphic):創建一個帶有指定文本和圖標作為標簽的切換按鈕。

常用方法:

方法 描述
setToggleGroup(ToggleGroup val) 設置屬性toggleGroup的值。
setSelected(boolean val) 設置所選屬性的值。
isSelected() 獲取所選屬性的值。
fire() 當用戶手勢指示此ButtonBase的事件應發生時調用。

以下示例程序旨在說明ToggleButton類的用法:

  1. 演示ToggleButton類的簡單Java程序:在此程序中,我們嘗試選擇一個人的性別。我們首先創建HBox,然後為其設置Layout。創建一個ToggleGroup和新的切換按鈕,分別命名為“ Male”和“ Female”。使用setToggleGroup()方法設置切換組(一次隻能選擇一個按鈕)。默認情況下,“男性”按鈕處於選中狀態。使用setScene()方法創建場景並將場景設置為舞台。並啟動應用程序。
    // Java program to demonstrate ToggleButton Class 
    import javafx.application.Application; 
    import javafx.geometry.Insets; 
    import javafx.scene.Scene; 
    import javafx.scene.control.Label; 
    import javafx.scene.control.ToggleButton; 
    import javafx.scene.control.ToggleGroup; 
    import javafx.scene.layout.HBox; 
    import javafx.stage.Stage; 
      
    public class ToggleButtonExample extends Application { 
      
        public void start(Stage stage) 
        { 
      
            // Hbox layout 
            HBox root = new HBox(); 
            root.setPadding(new Insets(10)); 
            root.setSpacing(5); 
      
            // Gender 
            root.getChildren().add(new Label("Your gender:")); 
      
            // Creating a ToggleGroup 
            ToggleGroup group = new ToggleGroup(); 
      
            // Creating new Toggle buttons. 
            ToggleButton maleButton = new ToggleButton("Male"); 
            ToggleButton femaleButton = new ToggleButton("Female"); 
      
            // Set toggle group 
            // In a group, maximum only 
            // one button is selected 
            maleButton.setToggleGroup(group); 
            femaleButton.setToggleGroup(group); 
      
            maleButton.setUserData("I am a Male"); 
            femaleButton.setUserData("I am a Female"); 
      
            // male button is selected at first by default 
            maleButton.setSelected(true); 
      
            root.getChildren().addAll(maleButton, femaleButton); 
      
            // create the scene 
            Scene scene = new Scene(root, 450, 300); 
      
            stage.setTitle("Toggle Button"); 
            stage.setScene(scene); 
            stage.show(); 
        } 
      
        // Main Method 
        public static void main(String[] args) 
        { 
            launch(args); 
        } 
    }

    輸出:

  2. Java程序使用ChangeListener演示ToggleButton類:在此程序中,我們首先創建一個標簽。然後,我們將使用ToggleButton()創建切換按鈕,並使用ToggleGroup()方法創建切換組。將所有的切換按鈕添加到ToggleGroup。現在為ToggleGroup創建一個ChangeListener。每當ObservableValue的值更改時,將通知ChangeListener。 ObservableValue是一個包裝值並允許觀察該值以進行更改的實體。現在,創建用於選擇主題的標簽。使用HBox()創建HBox現在,將ToggleButtons添加到HBox。使用setSpacing()方法設置按鈕之間的間距。創建VBox,將標簽和HBox添加到VBox。設置VBox的大小並設置VBox的填充(例如border-style,border-width,border-radius,border-insets,border-color)。創建場景並將其添加到舞台。設置舞台標題並顯示。
    // Java program to demonstrate ToggleButton 
    // Class using ChangeListener 
    import javafx.application.Application; 
    import javafx.beans.value.ChangeListener; 
    import javafx.beans.value.ObservableValue; 
    import javafx.scene.Scene; 
    import javafx.scene.control.Label; 
    import javafx.scene.control.Toggle; 
    import javafx.scene.control.ToggleButton; 
    import javafx.scene.control.ToggleGroup; 
    import javafx.scene.layout.HBox; 
    import javafx.scene.layout.VBox; 
    import javafx.stage.Stage; 
      
    public class ToggleButtonDemo extends Application { 
      
        // Create the Message Label 
        Label selectionMsg = new Label("Your selection:None"); 
      
    public void start(Stage stage) 
    { 
      
        // Create four ToggleButtons 
        ToggleButton csBtn = new ToggleButton("Computer Science"); 
        ToggleButton pBtn = new ToggleButton("Physics"); 
        ToggleButton chemBtn = new ToggleButton("Chemistry"); 
        ToggleButton mBtn = new ToggleButton("Maths"); 
      
        // Create a ToggleGroup 
        final ToggleGroup group = new ToggleGroup(); 
      
        // Add all ToggleButtons to a ToggleGroup 
        group.getToggles().addAll(csBtn, pBtn, chemBtn, mBtn); 
      
        // Create a ChangeListener for the ToggleGroup 
        group.selectedToggleProperty().addListener( 
                       new ChangeListener<Toggle>()  
        { 
            public void changed(ObservableValue<? extends Toggle> ov, 
                        final Toggle toggle, final Toggle new_toggle) 
            { 
                String toggleBtn = ((ToggleButton)new_toggle).getText(); 
                selectionMsg.setText("Your selection:" + toggleBtn); 
            } 
        }); 
      
        // Create the Label for the Selection 
        Label selectLbl = new Label("Select the subject:"); 
      
        // Create a HBox 
        HBox buttonBox = new HBox(); 
      
        // Add ToggleButtons to an HBox 
        buttonBox.getChildren().addAll(csBtn, pBtn, chemBtn, mBtn); 
      
        // Set the spacing between children to 10px 
        buttonBox.setSpacing(10); 
      
        // Create the VBox 
        VBox root = new VBox(); 
      
        // Add the Labels and HBox to the VBox 
        root.getChildren().addAll(selectionMsg, selectLbl, buttonBox); 
      
        // Set the spacing between children to 10px 
        root.setSpacing(10); 
      
        // Set the Size of the VBox 
        root.setMinSize(350, 250); 
      
          
        // Set the padding of the VBox 
        // Set the border-style of the VBox 
        // Set the border-width of the VBox 
        // Set the border-insets of the VBox 
        // Set the border-radius of the VBox 
        // Set the border-color of the VBox 
        root.setStyle("-fx-padding:10;"
                + "-fx-border-style:solid inside;"
                + "-fx-border-width:2;"
                + "-fx-border-insets:5;"
                + "-fx-border-radius:5;"
                + "-fx-border-color:blue;"); 
      
        // Create the Scene 
        Scene scene = new Scene(root); 
      
        // Add the scene to the Stage 
        stage.setScene(scene); 
      
        // Set the title of the Stage 
        stage.setTitle("A ToggleButton Example"); 
      
        // Display the Stage 
        stage.show(); 
    } 
      
        // Main Method 
        public static void main(String[] args) 
        { 
      
            // launch the application 
            Application.launch(args); 
        } 
    }

    輸出:


  3. 注意:以上程序可能無法在在線IDE中運行。請使用離線編譯器。

    參考: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ToggleButton.html



相關用法


注:本文由純淨天空篩選整理自chitranayal大神的英文原創作品 JavaFX | ToggleButton Class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。