javafx - 无法获取文本字段输入 [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>
错误是什么,如果可能的话,你能提供一个解释吗?谢谢你。
解决方案
问题是在这里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!");
}
推荐阅读
- javascript - 如何在退出计时器功能的下一部分功能时播放音频?
- postgresql - PostgreSQL 表中的 UPSERT,DBeaver SQL 编辑器,SQL 错误 [42601]:错误:“for”位置或附近的语法错误:10
- python - Python 请求 - 从 S3 拉到多部分类型错误
- informatica - 使用 Informatica Power Center 处理 SCD TYPE_2 中的删除
- php - 对框架和核心 php 使用相同版本的 xampp/php?
- node.js - 为什么电子生成器因访问被拒绝错误而失败?
- qt - 如何在不更改 PATH 的情况下告诉 Cmake Qt 安装目录?
- c++ - 向量作为类成员
- reactjs - setOpen 不会影响表中的特定行
- javascript - WebStorm Live Edit 不适用于 JavaScript,有什么解决方案吗?