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
相关产品推荐
相关产品推荐

