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

如何解决JTextField.getSelectedText()返回null引发的Java空指针异常

java.lang.NullPointerException: Cannot invoke "String.toString()" because the return value of "javax.swing.JTextField.getSelectedText()" is null

问题根因

javax.swing.JTextField.getSelectedText() 方法仅当文本框内存在用户手动选中的文本时,才会返回对应的选中字符串;如果没有任何内容被选中,该方法的返回值为null。你的代码未做非空校验就直接调用toString()方法,因此触发空指针异常。
录入分数的业务场景下,你大概率是误把获取全部文本的方法用成了获取选中文本的方法。

解决方案

场景1:需获取文本框内全部输入的分数(绝大多数录入场景的需求)

直接将getSelectedText()替换为getText()方法即可。getText()会返回文本框内的全部输入内容,无输入时也会返回空字符串,不会返回null,可从根源避免空指针问题。
示例代码:

// 错误写法
String inputScore = scoreTextField.getSelectedText().toString();
// 正确写法,加trim()可自动去掉输入内容前后的空格
String inputScore = scoreTextField.getText().trim();

场景2:确实需要获取用户选中的部分文本

调用getSelectedText()后先做非空校验,再执行后续逻辑:

String selectedText = scoreTextField.getSelectedText();
if (selectedText == null) {
    // 可根据业务需求选择处理逻辑
    // 方案1:默认赋值为空字符串
    selectedText = "";
    // 方案2:弹出提示后终止后续操作
    // JOptionPane.showMessageDialog(null, "请先选中要操作的内容");
    // return;
}
// 后续业务逻辑

额外优化建议

  • 拿到输入的分数字符串后,先做合法性校验:判断是否为合法数字、分数范围是否在0~100的合理区间内,避免入库时出现数据格式错误
  • 数据库操作优先使用PreparedStatement预编译SQL,既可以避免SQL注入风险,也能自动处理特殊字符的转义问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:06:00