如何在javafx中只按一次按钮

时间:2015-04-15 14:46:54

标签: java button javafx

所以我在主菜单中有四个按钮,我希望用户一次只能按一个按钮。这是因为我的几个按钮转到另一个屏幕。如果他们不止一次按下那个按钮,那么屏幕将加载两次或第n次,我不会这样做。想要那个。因此,一旦用户点击任何这些按钮,然后在他们返回屏幕后重新启用,便宜的修复方法是将所有按钮设置为禁用。我可以使用收音机按钮,但屏幕的设计将被破坏。有什么想法吗?

4 个答案:

答案 0 :(得分:2)

这是一个简单的答案。

isDisabled = new SimpleBooleanProperty();
backToMain.disableProperty().bind(isDisabled);

然后我用了

isDisabled.setValue(true); // in my eventhandler method

并且有效。

如果有人有更好的答案,请发布。

答案 1 :(得分:0)

您可以使用Segmented button of Controls FX并在其上实施您的廉价想法。

答案 2 :(得分:0)

我认为这很简单。实际上您有:

    @FXML
    private Button btn;

然后,在您希望事件发生并且按钮冻结本身的位置,放置:

btn.setDisable(true);

事件一旦发生,按钮会冻结

答案 3 :(得分:0)

我不确定您如何创建新窗口,但是我使用此方法仅允许打开一个窗口实例。

在类中声明您的变量:

private Stage settingsStage = new Stage();

设置您的方法:

@FXML // this method opens the settings window
void OpenSettings(ActionEvent event) throws IOException {
    // if the stage is already open, exit the method
    if (settingsStage.isShowing()) {
        return;
    }       
    // set up the source controller for the new window
    // FXMLLoader fxmlLoader = new
    // FXMLLoader(getClass().getResource("Settings.fxml"));
    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Login.fxml"));
    // load the controls for the window
    Parent settings = (Parent) fxmlLoader.load();
    // make the window always on top of open windows
    settingsStage.setAlwaysOnTop(true);
    // set the title for the window
    settingsStage.setTitle("Login");
    // set the icon for the window
    settingsStage.getIcons().add(new Image("application/images/Lead.png"));
    // set the scene for the stage
    settingsStage.setScene(new Scene(settings));
    settings.getStylesheets().add(getClass().getResource("login.css").toExternalForm());
    // finally display the window to the user
    settingsStage.show();
}