JavaFX程序合并TextField值出现十六进制值,如何获取字符串?
解决JavaFX TextField获取输入内容而非对象哈希串的问题
你看到的「十六进制值」其实是TextField对象默认toString()方法返回的格式(类名@哈希码),核心问题是你没正确调用获取输入文本的方法,且拼接逻辑存在错误:
- 必须用
getText()获取输入内容:JavaFX的TextField专门提供了getText()方法来获取用户输入的文本,toString()是Object类的方法,返回的是对象的标识信息,不是用户输入内容。 - 修正拼接逻辑:你代码里定义了fN、mN等变量但未实际使用,还存在未定义的
notHex变量,需要替换为对应的文本变量。
修正后的按钮事件处理代码
class ButtonClicker implements EventHandler<ActionEvent> { @Override public void handle(ActionEvent event) { // 调用getText()获取用户输入的文本 String fN = tFirstName.getText(); String mN = tMiddleName.getText(); String lN = tLastName.getText(); String tP = tPrefix.getText(); // 按目标格式拼接字符串 String all = String.format("%s %s %s %s", tP, fN, mN, lN); labelAll.setText(all); } }
额外优化建议
代码里无需新建actualStage,直接使用start方法参数的primaryStage即可,修改后更规范:
@Override public void start(Stage primaryStage) { Button b = new Button("format"); b.setOnAction(new ButtonClicker()); vB = new VBox(lPrefix, tPrefix, lFirstName, tFirstName, lMiddleName, tMiddleName, lLastName, tLastName, labelAll, b); s = new Scene(vB); primaryStage.setScene(s); primaryStage.show(); }
内容的提问来源于stack exchange,提问作者jacob 6823
相关产品推荐
相关产品推荐

