ToggleButton(开关按钮)

JavaFX ToggleButton 是一个要么被选择、要么不被选择的按钮。就像一个开关,当你按下它时它会凹进去(表示按下),而当你下次按下它时它又会弹出来 —— 以表示被选择或未选择。JavaFX ToggleButton 由 javafx.scene.control.ToggleButton 类表示。

A JavaFX ToggleButton is a button that can be selected or not selected. Like a button that stays in when you press it, and when you press it the next time it comes out again. Toggled - not toggled. The JavaFX ToggleButton is represented by the class javafx.scene.control.ToggleButton.

创建一个 ToggleButton

您可以通过创建 ToggleButton 类的实例来创建 JavaFX ToggleButton。下面是创建 JavaFX ToggleButton 实例的示例:

You create a JavaFX ToggleButton by creating an instance of the ToggleButton class. Here is an example of creating a JavaFX ToggleButton instance:

  1. ToggleButton toggleButton1 = new ToggleButton("Left");

此示例创建一个带有文本 LeftToggleButton

This example creates a ToggleButton with the text Left on.

在场景图中添加 ToggleButton

要使 ToggleButton 可见,您必须将其添加到 JavaFX 场景图中。这意味着将其添加到 Scene,或作为附加到 Scene 对象的布局组件的子节点。

To make a ToggleButton visible you must add it to the JavaFX scene graph. This means adding it to a Scene, or as child of a layout which is attached to a Scene object.

这是一个将 JavaFX ToggleButton 添加到场景图的示例:

Here is an example that attaches a JavaFX ToggleButton to the scene graph:

  1. package com.jenkov.javafx.controls;
  2. import javafx.application.Application;
  3. import javafx.scene.Scene;
  4. import javafx.scene.control.ToggleButton;
  5. import javafx.scene.layout.HBox;
  6. import javafx.stage.Stage;
  7. public class ToggleButtonExperiments extends Application {
  8. @Override
  9. public void start(Stage primaryStage) throws Exception {
  10. primaryStage.setTitle("HBox Experiment 1");
  11. ToggleButton toggleButton1 = new ToggleButton("Left");
  12. HBox hbox = new HBox(toggleButton1);
  13. Scene scene = new Scene(hbox, 200, 100);
  14. primaryStage.setScene(scene);
  15. primaryStage.show();
  16. }
  17. public static void main(String[] args) {
  18. Application.launch(args);
  19. }
  20. }

以下两个屏幕截图展示了运行上述示例代码所产生的应用程序。第一个屏幕截图显示了一个未按下的 ToggleButton,第二个屏幕截图显示了相同的 ToggleButton 被按下(代表其被选择、激活等):

The application resulting from running the above example code is illustrated in the following two screenshots. The first screenshot shows a ToggleButton which is not pressed, and the second screenshot shows the same ToggleButton pressed (selected, activated etc.):

A JavaFX ToggleButton which is not pressed.

A JavaFX ToggleButton which is pressed.

ToggleButton 文本

您可以通过其 setText() 方法设置或更改 JavaFX ToggleButton 的文本。下面是通过 setText() 更改 JavaFX ToggleButton 文本的示例:

You can set or change the text of a JavaFX ToggleButton via its setText() method. Here is an example of changing the text of a JavaFX ToggleButton via setText():

  1. ToggleButton toggleButton = new ToggleButton("Toggle This!");
  2. toggleButton.setText("New Text");

ToggleButton 字体

您可以通过其 setFont() 方法设置用于呈现 JavaFX ToggleButton 按钮文本的字体。您可以在 Fonts(字体)教程中阅读有关创建字体的更多信息。 下面是设置 JavaFX ToggleButton 字体的示例:

You can set the font to use to render the button text of a JavaFX ToggleButton via its setFont() method. You can read more about creating fonts in Fonts tutorial. Here is an example of setting the font of a JavaFX ToggleButton:

  1. ToggleButton toggleButton = new ToggleButton("Toggle This!");
  2. Font arialFontBold36 = Font.font("Arial", FontWeight.BOLD, 36);
  3. toggleButton.setFont(arialFontBold36);

读取选定状态

ToggleButton 类有一个名为 isSelected 的方法,可让您确定是否选择(按下)了 ToggleButton。如果 ToggleButton 被选中,isSelected() 方法返回一个值为 true 的布尔类型,否则返回 false。这是一个例子:

The ToggleButton class has a method named isSelected which lets you determine if the ToggleButton is selected (pressed) or not. The isSelected() method returns a boolean with the value true if the ToggleButton is selected, and false if not. Here is an example:

  1. boolean isSelected = toggleButton1.isSelected();

开关组(ToggleGroup)

您可以将 JavaFX ToggleButton 实例分组到 ToggleGroup 中。ToggleGroup 最多允许在任何时候切换(按下)一个 ToggleButton。因此,ToggleGroup 中的 ToggleButton 实例的功能类似于单选按钮。

You can group JavaFX ToggleButton instances into a ToggleGroup. A ToggleGroup allows at most one ToggleButton to be toggled (pressed) at any time. The ToggleButton instances in a ToggleGroup thus functions similarly to radio buttons.

这是一个 JavaFX ToggleGroup 的示例:

Here is a JavaFX ToggleGroup example:

  1. ToggleButton toggleButton1 = new ToggleButton("Left");
  2. ToggleButton toggleButton2 = new ToggleButton("Right");
  3. ToggleButton toggleButton3 = new ToggleButton("Up");
  4. ToggleButton toggleButton4 = new ToggleButton("Down");
  5. ToggleGroup toggleGroup = new ToggleGroup();
  6. toggleButton1.setToggleGroup(toggleGroup);
  7. toggleButton2.setToggleGroup(toggleGroup);
  8. toggleButton3.setToggleGroup(toggleGroup);
  9. toggleButton4.setToggleGroup(toggleGroup);

这是一个完整的示例,它将 4 个 ToggleButton 实例添加到 ToggleGroup,并将它们添加到场景图中:

Here is a full example that adds the 4 ToggleButton instances to a ToggleGroup, and adds them to the scene graph too:

  1. package com.jenkov.javafx.controls;
  2. import javafx.application.Application;
  3. import javafx.scene.Scene;
  4. import javafx.scene.control.ToggleButton;
  5. import javafx.scene.control.ToggleGroup;
  6. import javafx.scene.layout.HBox;
  7. import javafx.stage.Stage;
  8. public class ToggleButtonExperiments extends Application {
  9. @Override
  10. public void start(Stage primaryStage) throws Exception {
  11. primaryStage.setTitle("HBox Experiment 1");
  12. ToggleButton toggleButton1 = new ToggleButton("Left");
  13. ToggleButton toggleButton2 = new ToggleButton("Right");
  14. ToggleButton toggleButton3 = new ToggleButton("Up");
  15. ToggleButton toggleButton4 = new ToggleButton("Down");
  16. ToggleGroup toggleGroup = new ToggleGroup();
  17. toggleButton1.setToggleGroup(toggleGroup);
  18. toggleButton2.setToggleGroup(toggleGroup);
  19. toggleButton3.setToggleGroup(toggleGroup);
  20. toggleButton4.setToggleGroup(toggleGroup);
  21. HBox hbox = new HBox(toggleButton1, toggleButton2, toggleButton3, toggleButton4);
  22. Scene scene = new Scene(hbox, 200, 100);
  23. primaryStage.setScene(scene);
  24. primaryStage.show();
  25. }
  26. public static void main(String[] args) {
  27. Application.launch(args);
  28. }
  29. }

生成的应用程序如下所示:

The resulting applications looks like this:

Four JavaFX ToggleButton instances in a ToggleGroup.

读取 ToggleGroup 的选定状态

您可以使用 getSelectedToggle() 方法读取 ToggleGroup 的哪个 ToggleButton 被选中(按下),如下所示:

You can read which ToggleButton of a ToggleGroup is selected (pressed) using the getSelectedToggle() method, like this:

  1. ToggleButton selectedToggleButton =
  2. (ToggleButton) toggleGroup.getSelectedToggle();

如果没有 ToggleButton 被选中,则 getSelectedToggle() 方法返回 null

If no ToggleButton is selected the getSelectedToggle() method returns null .