我无法从javafx中的textfield中提取用户输入。
当我单击按钮时,我希望文本字段中的文本应该在控制台中打印,但它不显示任何内容。以下是截图:1
控制器类:
public class FXMLDocumentController implements Initializable {
@FXML
private Label label;
@FXML
private TextField textField;
@FXML
private Button button;
@FXML
private void handleButtonAction(ActionEvent event) {
textField = new TextField();
System.out.println("You clicked me!" + textField.getText());
label.setText("Hello World!");
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}
FXML:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320"
xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="javafxapplication4.FXMLDocumentController">
<children>
<Button fx:id="button" layoutX="126" layoutY="90"
onAction="#handleButtonAction" text="Click Me!" />
<Label fx:id="label" layoutX="126" layoutY="120" minHeight="16"
minWidth="69" />
<TextField fx:id="textField" layoutX="86.0" layoutY="137.0" />
</children>
</AnchorPane>
错误是什么,如果可能,您能提供解释吗? 谢谢。
答案 0 :(得分:1)
问题在于textField = new TextField();
您正在重新定义textField实例,这就是为什么您获得空值,但您已经使用TextField
注释实现了@FXML
,以便检索textField(之前已定义)中的文本将您的方法更改为:
@FXML
private void handleButtonAction(ActionEvent event) {
System.out.println("You clicked me!" + textField.getText());
label.setText("Hello World!");
}