首页 > 解决方案 > 无法获取文本字段输入 [JavaFX]

问题描述

我无法从 javafx 中的文本字段中提取用户输入。

当我单击按钮时,我希望文本字段中的文本应该在控制台中打印,但它什么也不显示。截图如下: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>

错误是什么,如果可能的话,你能提供一个解释吗?谢谢你。

标签: javafx

解决方案


问题是在这里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!");
}

推荐阅读