我无法禁用我的按钮。 “accept”=按钮,“email”= textField。
email.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event)
{
if(email.getText().isEmpty() == false)
{
accept.setDisable(false);
}else accept.setDisable(true);
}
});
如果我在textField中写,它什么都没有。
你可以使用一个简单的BooleanBinding
绑定到Button
的disabledProperty
。完成此操作只需2行代码:
BooleanBinding isTextFieldEmpty = Bindings.isEmpty(textField.textProperty());
button.disableProperty().bind(isTextFieldEmpty);
您可以使用下面的MCVE查看它的实际效果:
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class BooleanBindingExample extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// Simple interface
VBox root = new VBox(5);
root.setPadding(new Insets(10));
root.setAlignment(Pos.CENTER);
// TextField and Button
TextField textField = new TextField();
Button button = new Button("Click Me");
root.getChildren().addAll(textField, button);
// Create a BooleanBinding for the textField to hold whether it is null
BooleanBinding isTextFieldEmpty = Bindings.isEmpty(textField.textProperty());
// Now, bind the Button's disableProperty to that BooleanBinding
button.disableProperty().bind(isTextFieldEmpty);
// Show the Stage
primaryStage.setWidth(300);
primaryStage.setHeight(300);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
}