如何实现一个持续活动的循环来检查更改?

时间:2018-12-24 13:36:52

标签: loops user-interface intellij-idea javafx

我在“开始”方法中创建了一个空的TextField test和一个空的TextField test2

public void start(Stage primaryStage) throws Exception {}

现在,我想不断检查是否test.getText().equals("")。如果是,则为test2.setEditable(false),否则为test2.setEditable(true)

我不知道如何实现它,因为它需要不断检查。

我已经尝试在start方法中实现if语句,并且实际上在开始时将test2上的notEditable设置为test为空,但是当{ {1}}更改为test.getText().equals("") !test.getText().equals("")仍不可编辑。

2 个答案:

答案 0 :(得分:1)

您可以通过将editable的{​​{1}}属性绑定到test2的{​​{1}}属性来实现。

text

test的{​​{1}}属性是import javafx.application.Application; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.TextField; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { TextField test = new TextField(); TextField test2 = new TextField(); // do the binding test2.editableProperty().bind(test.textProperty().isEmpty().not()); VBox root = new VBox(20, test, test2); root.setAlignment(Pos.CENTER); root.setPadding(new Insets(50)); primaryStage.setScene(new Scene(root, 300, 150)); primaryStage.setTitle("Example"); primaryStage.show(); } } 。此类具有方法text(由TextField继承),该方法返回StringProperty,如果isEmpty的值为空或null,则该StringExpression将容纳BooleanBindingtrue调用会否定StringProperty的值,这意味着not()仅在BooleanBinding的文本为 not 为空时才可编辑。

答案 1 :(得分:0)

您不必一直检查,而是可以听这样的更改:

test.textProperty().addListener((observable, oldValue, newValue) -> {
  if (newValue.equals("")) {
     test2.setEditable(false);
  } 

);