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

JavaFX绑定到多个属性

禄豪
2023-03-14

我有一个带有文本字段和按钮的简单fxml。如果文本字段为空,我想禁用按钮。所以我在我的控制器中插入如下内容:

@Override
public void initialize(URL url, ResourceBundle bundle) {
  button.disableProperty().bind(textField.textProperty().isEqualTo(""));
}

..这很好用。问题是,当我添加第二个文本字段时,如果其中一个文本字段为空,我希望禁用我的按钮。那怎么办呢?我尝试了以下方法,但不起作用:

@Override
public void initialize(URL url, ResourceBundle bundle) {
  button.disableProperty().bind(textField.textProperty().isEqualTo(""));
  button.disableProperty().bind(textField2.textProperty().isEqualTo(""));
}

共有3个答案

饶曦之
2023-03-14

除了martin_dk答案之外,如果你想绑定两个以上的属性,你会得到如下代码,看起来很奇怪,但它有效。

BooleanBinding booleanBinding
        = finalEditor.selectedProperty().or(
                staticEditor.selectedProperty().or(
                        syncEditor.selectedProperty().or(
                                nativeEditor.selectedProperty().or(
                                        strictEditor.selectedProperty()))));

abstractEditor.disableProperty ().bind(booleanBinding);
阙佐
2023-03-14

除了Andreys方法之外,我发现你也可以这样做:

    BooleanBinding booleanBinding = 
      textField.textProperty().isEqualTo("").or(
        textField2.textProperty().isEqualTo(""));

    button.disableProperty().bind(booleanBinding);
赏弘
2023-03-14

这可以通过绑定到布尔表达式来实现:

button.disableProperty().bind(
    Bindings.and(
        textField.textProperty().isEqualTo(""),
        textField2.textProperty().isEqualTo("")));
 类似资料:
  • 问题内容: 我有一个带有文本字段和按钮的简单fxml。如果文本字段为空,我想禁用按钮。所以我在控制器中插入如下内容: ..那很好。问题是当我添加第二个文本字段时,如果其中一个文本字段为空,希望禁用我的按钮。那该怎么办?我尝试了以下操作,但这不起作用: 问题答案: 可以通过以下方式绑定到布尔表达式:

  • 我正在开发一个简单的Java程序来完成一些简单的mySQL内容。它有一个用JavaFX制作的小GUI。 GUI的控制器有一个SimpleBoleanProperty,我们称之为X,它指示到数据库的连接状态。我将一些简单的东西绑定到它,比如按钮的disableProperty so send querys,如果没有连接,应该禁用它。到现在为止,一直都还不错。 我有一个标签,用于执行以下操作: 如果X

  • 我想做的是: 我有一个JavaFX窗口,我通过拖动不断改变它的宽度和高度。然后的文本具有以下格式: 例子: 我想使用绑定,而不是使用2(两)个ChangeListeners来实现这一点。 我也读过这个问题JavaFX绑定到多个属性

  • 我有一个JavaFX 8应用程序,希望允许一个任务修改两个不同的UI元素。据我所知,如果我有一个标签要修改,我可以用mylabel绑定到标签。textProperty()。绑定(mytask.messageProperty())并在任务中使用updateMessage()。 如何使用两种不同的任意类型执行此操作?我已经查看了并发和JavaFX文档中的示例,但对我来说,它们并没有很好地解释这一点。

  • 我在一个应用程序上工作,该应用程序向SQL数据库询问不同的值。这里我有一个近40列的表,我的pojos有JavaFX-Properties。所以现在我将填充数据库数据的属性绑定到UI组件,如文本字段等。 我现在的做法是手动将所有ui属性绑定到pojo属性。但这是一个很大的方法,有40个条目可以手动绑定所有属性。 你能告诉我一个更好的方法吗?也许像javafx的表系统一样通过字符串绑定属性? @詹姆

  • 我有一个预览页面,需要添加或编辑模型,并显示预览。 我需要从添加表单页和编辑表单页调用预览。我要通过的模型是相同的,但来自不同的形式。 (1) ModelAttribute是否有支持这种多属性名称映射的方法?(2) 我怎么能考虑重新设计这个?考虑(a)在表单提交之前重命名表单名称/属性以使用相同的属性名称。(b) 完全删除ModelAttribute——这不是我的选项,因为我使用的是SpringM