每当使用箭头键导航到 ToggleGroup 时选择 RadioButton
Selecting a RadioButton in a ToggleGroup whenever it is navigated to with the arrow keys
我有一个程序包含一系列共享 ToggleGroup
的 RadioButton
。以下为简化版:
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
ToggleGroup toggleGroup = new ToggleGroup();
RadioButton button1 = new RadioButton();
button1.setText("Button 1");
button1.setOnAction(this::printSelectedRadioButton);
button1.setToggleGroup(toggleGroup);
RadioButton button2 = new RadioButton();
button2.setText("Button 2");
button2.setOnAction(this::printSelectedRadioButton);
button2.setToggleGroup(toggleGroup);
VBox root = new VBox(10);
root.setAlignment(Pos.CENTER);
root.getChildren().addAll(button1, button2);
primaryStage.setScene(new Scene(root, 100, 100));
primaryStage.show();
}
private void printSelectedRadioButton(ActionEvent actionEvent) {
RadioButton radioButton = (RadioButton) actionEvent.getSource();
System.out.println(radioButton.getText());
}
public static void main(String[] args) {
launch(args);
}
}
当我单击 RadioButton
时,会触发 ActionEvent
并调用 printSelectedRadioButton()
方法。但是,一旦我单击 RadioButton
,如果我使用箭头键导航到另一个,则不会触发 ActionEvent
并且不会调用该方法。我希望导航到特定按钮与单击它具有相同的效果。我该怎么做?
RadioButton#setOnAction 仅在点击时起作用。如果你想获得选中的单选按钮,你必须将 ChangeListener 添加到 ToggleGroup。
ToggleGroup toggleGroup = new ToggleGroup();
toggleGroup.selectedToggleProperty().addListener((observableValue, oldToggle, newToggle) -> {
if (toggleGroup.getSelectedToggle() != null) {
System.out.println("selected radio button: " + toggleGroup.getSelectedToggle());
}
});
我有一个程序包含一系列共享 ToggleGroup
的 RadioButton
。以下为简化版:
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
ToggleGroup toggleGroup = new ToggleGroup();
RadioButton button1 = new RadioButton();
button1.setText("Button 1");
button1.setOnAction(this::printSelectedRadioButton);
button1.setToggleGroup(toggleGroup);
RadioButton button2 = new RadioButton();
button2.setText("Button 2");
button2.setOnAction(this::printSelectedRadioButton);
button2.setToggleGroup(toggleGroup);
VBox root = new VBox(10);
root.setAlignment(Pos.CENTER);
root.getChildren().addAll(button1, button2);
primaryStage.setScene(new Scene(root, 100, 100));
primaryStage.show();
}
private void printSelectedRadioButton(ActionEvent actionEvent) {
RadioButton radioButton = (RadioButton) actionEvent.getSource();
System.out.println(radioButton.getText());
}
public static void main(String[] args) {
launch(args);
}
}
当我单击 RadioButton
时,会触发 ActionEvent
并调用 printSelectedRadioButton()
方法。但是,一旦我单击 RadioButton
,如果我使用箭头键导航到另一个,则不会触发 ActionEvent
并且不会调用该方法。我希望导航到特定按钮与单击它具有相同的效果。我该怎么做?
RadioButton#setOnAction 仅在点击时起作用。如果你想获得选中的单选按钮,你必须将 ChangeListener 添加到 ToggleGroup。
ToggleGroup toggleGroup = new ToggleGroup();
toggleGroup.selectedToggleProperty().addListener((observableValue, oldToggle, newToggle) -> {
if (toggleGroup.getSelectedToggle() != null) {
System.out.println("selected radio button: " + toggleGroup.getSelectedToggle());
}
});