带有 Scene Builder 的 javafx 无法从 textField 获取文本

javafx with Scene Builder cannot getText from textField

我是 javafx 的初学者。我正在尝试创建一个可以通过单击按钮来存储输入的表单。但是,它有错误,我无法继续。 这是我的代码:

在 fxml 文件中:

 <VBox prefHeight="300.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ass.InputDataController">
   <children>
      <Label text=" Input" />
      <TextField id="Input" fx:id="Input" onAction="#handleButtonAction" />
      <Button fx:id="enter" onAction="#handleButtonAction" prefHeight="57.0" prefWidth="707.0" text="Enter" />
   </children>
</VBox> 

在InputDataController.java中:

  public class InputDataController implements Initializable {
  @FXML
  private TextField Input;
  @FXML
  private void handleButtonAction(ActionEvent event) {
     String t = Input->getText();
  }
    @Override
    public void initialize(URL url, ResourceBundle rb) {
    // TODO
    }
}

错误说:

error: incompatible types: String is not a functional interface
        String t = Input->getText();

我尝试实现另一个功能:

@FunctionalInterface
    interface String {
        String getText(TextField t);
    }

但它仍然声明:

error: cannot find symbol

有什么方法可以解决这个问题吗?如果我不用实现函数式接口就更好了!

正确的语法是

String t = Input.getText();

(在Java中,所有对象都是通过引用访问的,所以不需要不同的解引用运算符.->区分引用和指针,就像在其他语言中一样。您使用 reference.member 访问对象的成员。Java 中的 -> 运算符用于定义一个 "lambda expression",它可以分配给功能接口类型(具有单个抽象方法的接口),这就是编译器抱怨您将其分配给不是功能接口的东西的原因。)