无法获取文本字段输入[JavaFX]

时间:2018-04-25 11:16:32

标签: javafx

我无法从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>

错误是什么,如果可能,您能提供解释吗? 谢谢。

1 个答案:

答案 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!");
}