如何在 JavaFX 中使用多个按钮?

how to work with multiple buttons in JavaFX?

我有一个关于 JavaFX 按钮的问题。我的场景中有一组 4 个按钮。前三个按钮标记为 “主页”、“帐户”、“地图”。最后一个按钮叫做 "Go".

我正在使用 button.setOnAction(new EventHandler<ActionEvent>(){ })

为每个按钮控制它将触发的事件。我的问题是我想单击前三个按钮(帐户、主页、地图)之一,但在单击 "go" 按钮之前不会对该事件执行操作。

比如我点击首页,按钮变色表示被点击。我按下去,与主页按钮相关的动作将被执行。我该怎么做?

我遇到的另一个问题是如何确保一次只单击前三个按钮(主页、帐户和地图)中的一个。如果我先单击“主页”,然后单击“地图”,然后单击“去”我想触发地图事件,所以当按下地图时,主页就会被释放。

感谢任何帮助:)

如评论中所述,您可以将 ToggleButton(或 RadioButton)用于 “主页”“帐户”。 =32=] 和 "地图",并将它们添加到 ToggleGroup:

public class App extends Application {

    @Override
    public void start(Stage stage) {

        ToggleButton buttonHome = new ToggleButton("Home");
        ToggleButton buttonAccount = new ToggleButton("Account");
        ToggleButton buttonMap = new ToggleButton("Map");
    
        ToggleGroup group = new ToggleGroup();
    
        group.getToggles().addAll(buttonHome, buttonAccount, buttonMap);
    
        Button buttonGo = new Button("Go");

        // Disable button "Go" when no other button is selected (remove this line if not needed)
        buttonGo.disableProperty()
                    .bind(group.selectedToggleProperty().isNull());
    
        buttonGo.setOnAction(e -> {
            ToggleButton selected = (ToggleButton)group.getSelectedToggle();
            if (selected != null) {
                System.out.println(selected.getText());
            }
        });
    
        HBox buttons = new HBox(5, buttonHome, buttonAccount, buttonMap);
    
        VBox pane = new VBox(10, buttons, buttonGo);
        pane.setAlignment(Pos.CENTER_RIGHT);

        Scene scene = new Scene(pane);

        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }

}

输出:

如果将所有 ToggleButton 替换为 RadioButton: