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

Java绘图面板循环绘制0-9数字时,0被跳过的问题求助

解决Java绘图中数字0不显示的问题

你的循环并没有跳过0,问题出在数字0的绘制位置超出了面板可视区域:

当i=0时,cornerX = 0、cornerY = 0,此时你设置的字符串绘制坐标是cornerX - 29 = -29、cornerY - 8 = -8——这两个坐标都在绘图面板的左上角之外(面板的可视坐标从(0,0)开始,负数坐标无法显示),所以数字0根本没出现在可见区域里,并不是循环没执行。

修复方案

调整drawString的坐标,让数字显示在对应的图形范围内或者面板可视区域内。比如把字符串绘制位置改成矩形/椭圆的中心附近:

// Draws boxed ovals using a while loop.
import java.awt.*;

public class DrawLoop 
{
    public static void main(String[] args) 
    {
        DrawingPanel panel = new DrawingPanel(502, 252);
        panel.setBackground(Color.CYAN);
        Graphics g = panel.getGraphics();
        
        String iValue = "";
        int sizeX = 50;  // size of boxes
        int sizeY = 25;
        int i;
        for (i = 0; i < 10; i++) { // start at i = 0 
            int cornerX = i*50;  // calculate upper left corner
            int cornerY = i*25;
            g.setColor(Color.WHITE);
            g.fillOval(cornerX + 5, cornerY + 5, sizeX-10, sizeY-10);
            g.setColor(Color.BLACK);
            g.drawRect(cornerX, cornerY, sizeX, sizeY);
            iValue = "" + i;
            // 调整坐标,让数字显示在矩形中心区域
            g.drawString(iValue, cornerX + 20, cornerY + 18);
        }
    }
}

关键改动说明

  • 将g.drawString(iValue, cornerX - 29, cornerY - 8);改为g.drawString(iValue, cornerX + 20, cornerY + 18);,确保坐标落在面板的可视范围内,同时对应到每个矩形的位置上。
  • 你可以根据自己的需求微调+20和+18这两个偏移值,让数字的位置更符合预期。

内容的提问来源于stack exchange,提问作者Everything Is Pain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:35:20