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

JComboBox选中后遮挡其他字段显示问题(关联MySQL外键数据)

这个问题是Java Swing中JComboBox的常见问题,本质是轻量级弹出层重绘残留、或是布局预留空间不足导致的,你可以按以下优先级尝试解决:

方法1:修复弹出层重绘bug

Swing默认使用轻量级组件渲染下拉弹出菜单,很容易出现绘制残留的问题,你可以在JComboBox初始化的代码段添加如下配置,改用系统级的重量级弹窗承载下拉菜单:

jComboBoxBerat.setLightWeightPopupEnabled(false);

同时可以在选中事件的赋值逻辑后,主动触发窗体重绘,清除残留界面:

if (rs.next()) {
    String price = rs.getString("price");
    txtHargaBerat.setText(price); 
    // 新增以下两行,如果组件放在JPanel中就把this替换为对应面板实例
    this.revalidate();
    this.repaint();
}

方法2:调整布局间距

如果是下拉框和下方文本框间距太小,下拉菜单展开后自然遮挡了目标字段,可以调整布局管理器的间距参数:

  • 如果用FlowLayout:初始化时设置vgap参数加大垂直间距
  • 如果用GridBagLayout:给JComboBox对应的GridBagConstraints设置insets.bottom值,拉大和下方组件的距离
  • 如果用绝对布局:直接调高JComboBox和txtHargaBerat的y轴坐标差,预留足够的下拉展开空间

补充代码优化建议

你当前的代码每次触发下拉选中事件都会新建数据库连接,反复创建销毁连接会大幅降低运行效率,建议改为复用连接或是引入数据库连接池;另外空的catch块会吞掉异常,排查问题时很难定位错误,建议补充异常日志或提示逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 00:09:03