当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。