失效按钮而空的TextField不工作(Disabling Button while TextFie

2019-10-29 20:52发布

BooleanBinding bb = new BooleanBinding() {
    {
       super.bind(addnum.textProperty(),addt1.textProperty(),addt2.textProperty(),
               addt3.textProperty(),addasg.textProperty(),addatt.textProperty());
    }
    @Override
    protected boolean computeValue() {
      return (addnum.getText().isEmpty() && addt1.getText().isEmpty()
            && addt2.getText().isEmpty() && addt3.getText().isEmpty()
            && addasg.getText().isEmpty() && addatt.getText().isEmpty());
       }
    };

    final Button b2 = new Button("Add");
    b2.disableProperty().bind(bb);

这是我的代码以禁用按钮时的TextField是空的,那就是当所有的文本字段都充满了按钮被激活。 但是这个代码不工作。 当一个文本字段被填充的按钮被激活。 我曾经在我的项目用于此相同目的的其他部分的代码添加它工作正常那里。 为什么不能在这里工作?

Answer 1:

如果你想在Button被激活,当且仅当填写了所有字段(即不空),那么你使用了错误的操作。 使用|| 而不是&& ,使其工作。

你可以看到easyly什么是错的,如果你重新制定从公式computeValue使用德摩根的法律; 我写

a1, a2, ..., a6

代替

`addnum.getText().isEmpty()`, `addt1.getText().isEmpty()`, ..., `addatt.getText().isEmpty()`:

下面的语句是等价的:

  • 按钮被激活
  • !(a1 && a2 && ... && a6)
  • (!a1 || !a2 ||...|| !a6)
  • 至少一个字段被填充

与此相反,随着|| 而不是&&

下面的语句是等价的:

  • 按钮被激活
  • !(a1 || a2 || ... || a6)
  • (!a1 && !a2 &&...&& !a6)
  • 填写了所有字段


文章来源: Disabling Button while TextFields empty not working