Как отключить кнопку, если TextField пустой? - PullRequest
0 голосов
/ 17 февраля 2019

Я не могу отключить мою кнопку.«принять» = кнопка, «электронная почта» = 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.

1 Ответ

0 голосов
/ 17 февраля 2019

Вы можете использовать простую 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...