如何使用Java fillRect实现类似电池样式的独立矩形子弹计数器
子弹计数器独立方块显示修复方案
核心问题原因
现有代码的绘制步长和单个矩形宽度不匹配:每个子弹矩形宽度为20px,但循环中x轴偏移仅设置为i*5,相邻矩形会完全重叠在一起,最终呈现为连续长条效果。
修正后代码
// 外框绘制逻辑调整了总宽度,适配最多6发子弹的显示,可根据实际最大弹药数自行修改 g.setColor(Color.black); g.fillRect(600,20,180,40); g.setColor(Color.white); g.fillRect(605,25,170,30); for(int i=0;i < player.ammo;i++){ g.setColor(Color.black); // 偏移步长调整为25:20px矩形宽度 + 5px间隔,实现独立分隔的方块效果 g.fillRect(610+(i*25),30,20,20); } bs.show();
自定义调整说明
如果需要显示更多子弹,可以自行调整对应参数:
- 缩小单个子弹矩形的宽度,比如从20px改为10px
- 对应缩小步长,比如调整为
i*15(10px宽度+5px间隔),同时调整外框的总宽度适配最大弹药量即可
该方案完全基于Graphics原生绘制能力实现,不需要引入额外组件,符合你要求的仅用image.getGraphics()相关方法实现的需求。
内容的提问来源于stack exchange,提问作者Gustavo Marinho
相关产品推荐
相关产品推荐

