Button 文本字段为空时禁用按钮不工作
这是我在文本字段为空时禁用按钮的代码,即当所有文本字段都已填充时,按钮变为活动状态。但是这个代码不起作用。当一个文本字段被填充时,按钮变为活动状态。我已经在我的项目的其他部分使用了这段代码,用于同样的目的,并且在那里工作得很好。为什么它不在这里工作?如果您希望Button 文本字段为空时禁用按钮不工作,button,javafx,javafx-2,textfield,Button,Javafx,Javafx 2,Textfield,这是我在文本字段为空时禁用按钮的代码,即当所有文本字段都已填充时,按钮变为活动状态。但是这个代码不起作用。当一个文本字段被填充时,按钮变为活动状态。我已经在我的项目的其他部分使用了这段代码,用于同样的目的,并且在那里工作得很好。为什么它不在这里工作?如果您希望按钮在且仅在所有字段都已填充(即不为空)的情况下处于活动状态,则您使用了错误的运算符。使用|而不是&&使其工作 如果您使用DeMorgan定律从computeValue重新格式化公式,您可以很容易地看出问题所在;我写 BooleanBind
按钮在且仅在所有字段都已填充(即不为空)的情况下处于活动状态,则您使用了错误的运算符。使用|
而不是&&
使其工作
如果您使用DeMorgan定律从computeValue
重新格式化公式,您可以很容易地看出问题所在;我写
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);
而不是
a1, a2, ..., a6
以下陈述是等效的:
- 按钮处于活动状态
!(a1&&a2&&…&&a6)
(!a1 | | |!a2 | | |……| |!a6)
- 至少有一个字段已填充
与使用|
而不是&
相比:
以下陈述是等效的:
- 按钮处于活动状态
!(a1 | | a2 | | | a6)
(!a1&&!a2&&…&&&&!a6)
- 所有字段都已填充
如果您希望按钮在且仅当所有字段都已填充(即非空)时处于活动状态,则说明您使用了错误的运算符。使用|
而不是&&
使其工作
如果您使用DeMorgan定律从computeValue
重新格式化公式,您可以很容易地看出问题所在;我写
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);
而不是
a1, a2, ..., a6
以下陈述是等效的:
- 按钮处于活动状态
!(a1&&a2&&…&&a6)
(!a1 | | |!a2 | | |……| |!a6)
- 至少有一个字段已填充
与使用|
而不是&
相比:
以下陈述是等效的:
- 按钮处于活动状态
!(a1 | | a2 | | | a6)
(!a1&&!a2&&…&&&&!a6)
- 所有字段都已填充
那么,您的问题是,代码确实执行了它应该执行的操作???如果一个文本字段不为空,则显然并非所有文本字段都为空,因此按钮不应再被禁用,即按钮应处于活动状态。还是我搞错了?@fabian只有当所有的文本字段都不是空的时候,按钮才会激活。所以你的问题是代码完全按照它应该做的做了???如果一个文本字段不为空,则显然并非所有文本字段都为空,因此按钮不应再被禁用,即按钮应处于活动状态。还是我搞错了?@fabian只有当所有文本字段都不为空时,按钮才会激活。