ToggleButton是具有选择函数的特殊控件。本质上,ToggleButton的呈现方式与Button类似,但是这两种是不同类型的控件。按钮是“command”按钮,单击该按钮可调用函数。但是ToggleButton是带有布尔值的控件,指示是否已选择它。它继承了ButtonBase类。
ToggleButton也可以成组放置。默认情况下,ToggleButton不在组中。分组时,一次只能选择该组中的一个ToggleButton。要将两个ToggleButtons放在同一组中,只需为ToggleGroup分配两个相同的值即可。与RadioButtons不同,ToggleGroup中的ToggleButtons不会尝试在组中强制至少选择一个ToggleButton。意味着,如果选择了ToggleButton,则单击它会使其变为未选中状态。使用RadioButton,单击组中的所选按钮将无效。
该类的构造函数:
- ToggleButton():创建一个带有空字符串标签的切换按钮。
- ToggleButton(String txt):创建一个以指定文本作为标签的切换按钮。
- ToggleButton(String txt, Node graphic):创建一个带有指定文本和图标作为标签的切换按钮。
常用方法:
方法 | 描述 |
---|---|
setToggleGroup(ToggleGroup val) | 设置属性toggleGroup的值。 |
setSelected(boolean val) | 设置所选属性的值。 |
isSelected() | 获取所选属性的值。 |
fire() | 当用户手势指示此ButtonBase的事件应发生时调用。 |
以下示例程序旨在说明ToggleButton类的用法:
- 演示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); } }
输出:
- 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); } }
输出:
注意:以上程序可能无法在在线IDE中运行。请使用离线编译器。
参考: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ToggleButton.html
注:本文由纯净天空筛选整理自chitranayal大神的英文原创作品 JavaFX | ToggleButton Class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。