如何在 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
:
我有一个关于 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
: