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

Java TextField无法更新问题求助:点击按钮始终显示20000

问题:点击按钮后文本框无法正确更新数值

点击按钮后,文本框(TextField)无法更新,每次都显示20000。需求为:从下拉框(combo box)选择选项后,文本框显示对应数值——选择STUDIO时显示10000,选择F3时显示20000。

原代码如下:

String typoo = typo.getSelectedItem().toString();
int pbb = 0 ;
if (typoo == "Studio") {
    pbb = 10000;
} 
else if (typoo == "F3") {
    pbb = 20000;
}

JButton btnNewButton = new JButton("UPDATE");
btnNewButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        pb.setText(String.valueOf(pbb));
    }
});

错误原因

  • 字符串比较逻辑错误:Java中==比较的是字符串对象的内存地址,而非内容。原代码里的typoo == "Studio"这类判断永远无法正确匹配字符串内容,同时需求中的选项是STUDIO,代码里写的是Studio,大小写不匹配也会导致判断失效。
  • 下拉框取值未实时更新:typoo和pbb仅在按钮初始化时赋值一次,之后用户切换下拉框选项,这两个变量不会重新计算,按钮点击时始终使用初始化时的旧值。

修复后的代码

JButton btnNewButton = new JButton("UPDATE");
btnNewButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // 每次点击按钮时实时获取下拉框最新选中项
        String typoo = typo.getSelectedItem().toString();
        int pbb = 0 ;
        // 用equals匹配字符串内容,大小写与需求保持一致
        if (typoo.equals("STUDIO")) {
            pbb = 10000;
        } 
        else if (typoo.equals("F3")) {
            pbb = 20000;
        }
        pb.setText(String.valueOf(pbb));
    }
});

关键修复点

  • 将下拉框取值和数值计算逻辑移到按钮点击事件内部,确保每次点击都能获取用户最新的选择。
  • 把字符串比较从==改为.equals()(若需要忽略大小写可使用.equalsIgnoreCase()),同时修正字符串大小写与需求一致,保证匹配逻辑生效。

内容的提问来源于stack exchange,提问作者MrHaouari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:53:19