当前位置: 首页 > 知识库问答 >
问题:

JavaFX禁用按钮

唐珂
2023-03-14

我正在用javaFX在netbeans中编写一个程序视图中有几个按钮和一些坏按钮(比如炸弹是扫雷舰),我试图在按下坏按钮时冻结程序,但我找不到如何操作

谢谢

共有2个答案

松俊才
2023-03-14

添加一个ROOT类型的事件过滤器,可以使用所有类型的事件(鼠标、键盘等)

btnThatHasHiddenMine.setOnAction(( ActionEvent event ) ->
{
    System.out.println("Ohh no! You just stepped over the mine!");
    getGameboardPane().addEventFilter( EventType.ROOT, Event::consume );
});

仅将过滤器添加到您的GameboardPane,因为我们不想冻结应用程序的其他部分。

巴博耘
2023-03-14

您的问题有多种解决方案。其中2个是简单地忽略动作事件或禁用如下按钮:

public class ButtonAction extends Application {

    final BooleanProperty buttonActionProperty = new SimpleBooleanProperty();

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

    @Override
    public void start(Stage primaryStage) {

        FlowPane root = new FlowPane();

        CheckBox checkBox = new CheckBox( "Enabled");
        checkBox.setSelected(true);

        // solution 1: check if action is allowed and process it or not
        buttonActionProperty.bind( checkBox.selectedProperty());

        Button button = new Button( "Click Me");
        button.setOnAction(e -> {
            if( buttonActionProperty.get()) {
                System.out.println( "Allowed, processing action");
            } else {
                System.out.println( "Not allowed, no action");
            }
        });

        // solution 2: remove comments to activate the code
        // button.disableProperty().bind(buttonActionProperty.not());

        root.getChildren().addAll(checkBox, button);

        primaryStage.setScene(new Scene(root, 600, 200));
        primaryStage.show();

    }
}
 类似资料:
  • 问题内容: 在Swing中,我们可以禁用这样的按钮: 无论如何,使用JavaFX Button可以做到这一点吗?用户只能按一次按钮。 问题答案: 当然。只有相关 属性具有相反的语义,并称为。这意味着您可以使用(not )和。由于它是JavaFX属性,因此您还可以将侦听器附加到。 在http://docs.oracle.com/javafx/2/api/javafx/scene/Node.html#

  • 在Swing中,我们可以禁用如下按钮: 有什么方法可以用JavaFX按钮做到这一点吗?用户应该只能按一次按钮。

  • 我正在使用JDK8u45,我正在尝试使用文本输入对话框,但在启用ok按钮之前,有没有办法禁用它?我检查了java文档,没有看到禁用功能。如果这不起作用,在java 8中还有其他方法可以做到这一点吗?

  • 我正在使用场景构建器2.0,我想让一个按钮在默认情况下被禁用。这是很好的工作,但我想使它启用,如果两个布尔设置为真。在场景构建器中,如何向按钮的状态添加条件? 因此,下面的launchButton方法是单击按钮时将发生的情况。并且checkBox方法中的布尔值应该以某种方式连接到场景构建器。

  • 问题内容: 单击后,我想在iOS上禁用按钮()。我是开发iOS的新手,但我认为目标上的等效代码-C是这样的: 但是我不能迅速做到这一点。 问题答案: Swift中的布尔值是。 应该做。 这是的属性的Swift文档。

  • 我正在使用。这是按钮的样子: 一个是关闭按钮,这很好。最小化是禁用的,这很好。但是最大化是存在的。我不希望我的工具窗口能够最大化。 我已经禁用了调整大小,但至少在Mac上它仍然能够最大化。如何禁用此功能?(我确实想拥有)。 编辑:这是当我将鼠标悬停在其中任何一个上时的样子: 这是一个“X”,但它不会关闭窗口!它最大化了它!