You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX程序合并TextField值出现十六进制值,如何获取字符串?

解决JavaFX TextField获取输入内容而非对象哈希串的问题

你看到的「十六进制值」其实是TextField对象默认toString()方法返回的格式(类名@哈希码),核心问题是你没正确调用获取输入文本的方法,且拼接逻辑存在错误:

  1. 必须用getText()获取输入内容:JavaFX的TextField专门提供了getText()方法来获取用户输入的文本,toString()是Object类的方法,返回的是对象的标识信息,不是用户输入内容。
  2. 修正拼接逻辑:你代码里定义了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:23:13