JavaFX无法获取TextField输入问题求助
解决JavaFX中TextField无法获取用户输入的问题
嘿,我一眼就发现问题所在啦!你在按钮点击事件的方法里犯了个关键错误,导致根本拿不到用户输入的内容。
先看你代码里的问题点:
@FXML private void handleButtonAction(ActionEvent event) { textField = new TextField(); // 这行就是问题根源! System.out.println("You clicked me!" + textField.getText()); }
问题原因
@FXML private TextField textField; 这行代码是让FXMLLoader自动把你FXML界面上的TextField实例注入到这个变量里,它已经和用户看到的输入框绑定了。但你在点击方法里重新new了一个TextField对象,直接覆盖了原来和界面绑定的实例——这个新创建的TextField根本不是用户输入的那个,它的内容是空的,所以控制台自然看不到任何输出。
修正后的代码
只需要删掉那行多余的new代码就行:
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()); } @Override public void initialize(URL url, ResourceBundle rb) { // 这里可以放初始化逻辑(如果需要的话) } }
小提醒
以后用FXML注入控件时记住这两点:
@FXML标注的变量不需要你手动new,FXMLLoader会自动完成实例化和界面绑定- 别随意给这些变量重新赋值,否则会断开和界面控件的关联,导致无法获取用户输入或操作界面元素
内容的提问来源于stack exchange,提问作者heethjain21
相关产品推荐
相关产品推荐

