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

JTextField.getText()获取不到值:蓝色阵营输入验证失败问题

问题根源与修复方案

核心问题:重复创建BlueField数组

在红色阵营确认按钮acceptII的事件处理逻辑中,你将blueSetUpTime()方法放在了遍历redfield的循环内部,这会导致bluefield数组被重复创建40次。用户实际输入内容的是第一次生成的bluefield组件,但后续循环会不断生成新的空JTextField覆盖原数组,最终验证时调用的是最后一次创建的空组件,自然获取不到输入值。

错误代码片段:

for(int ii =0; ii<40; ii++) {
    redfield[ii].setVisible(false);
    blueSetUpTime(); // 此方法被执行40次,重复创建bluefield
}

修复步骤

1. 调整blueSetUpTime调用位置

将blueSetUpTime()移到循环外部,确保只执行一次:

acceptII.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // 红色验证逻辑保持不变
        
        if(redbomb != 0 || redflag != 0 || redone != 0 || redtwo != 0 || redthree != 0 || redfour != 0 || redfive != 0 || redfive != 0 || redsix != 0 || redseven != 0 || redeight != 0 || rednine != 0 || redten != 0 ) {
            redinvalid.setVisible(true);
        }else {
            redinvalid.setVisible(false);
            acceptII.setVisible(false);
            redsetup.setVisible(false);
            // 先批量隐藏红色输入框
            for(int ii =0; ii<40; ii++) {
                 redfield[ii].setVisible(false);
             }
            // 仅调用一次蓝色初始化方法
            blueSetUpTime();
        }
    }
});

2. 修复蓝色验证的重复判断

在blueVerification()的条件判断里,重复写了两次bluefive != 0,删除其中一个即可:

// 修正前
if(bluebomb != 0 || blueflag != 0 || blueone != 0 || bluetwo != 0 || bluethree != 0 || bluefour != 0 || bluefive != 0 || bluefive != 0 || bluesix != 0 || blueseven != 0 || blueeight != 0 || bluenine != 0 || blueten != 0 )

// 修正后
if(bluebomb != 0 || blueflag != 0 || blueone != 0 || bluetwo != 0 || bluethree != 0 || bluefour != 0 || bluefive != 0 || bluesix != 0 || blueseven != 0 || blueeight != 0 || bluenine != 0 || blueten != 0 )

3. 重置计数变量(可选但关键)

红色验证会修改成员变量的计数(如redbomb、redflag),若后续需要重新设置红色阵营,这些变量不会自动重置。同理蓝色验证后也需重置,建议在验证方法开头添加初始化逻辑:

  • 红色验证开头添加:
// 重置红色单位计数
redbomb = 6; redflag = 1; redone =1; redtwo=8; redthree=5; redfour=4; redfive=4; redsix=4; redseven=3; redeight=2; rednine=1; redten=1;
  • blueVerification()开头添加:
// 重置蓝色单位计数
bluebomb =6; blueflag=1; blueone=1; bluetwo=8; bluethree=5; bluefour=4; bluefive=4; bluesix=4; blueseven=3; blueeight=2; bluenine=1; blueten=1;

额外优化建议

  • 避免使用null布局,改用GridLayout等布局管理器管理棋盘组件,减少手动坐标计算的错误。
  • 将阵营验证逻辑封装为通用方法,传入阵营颜色、计数变量等参数,消除红色/蓝色验证的重复代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:53:09