我是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
有什么方法可以解决这个问题吗?如果我不必实现功能界面会更好!
答案 0 :(得分:2)
正确的语法是
String t = Input.getText();
(在Java中,所有对象都是通过引用访问的,因此不需要使用不同的解除引用操作符.
和->
来区分引用和指针,如您可以使用reference.member
访问对象的成员.Java中的->
运算符用于定义“lambda表达式”,可以将其分配给作为功能接口的类型(接口)使用单个抽象方法),这就是为什么编译器抱怨你将它分配给不是功能接口的东西。)