一个用户aaa 2024-06-26 17:12 采纳率: 50%
浏览 3

Java绘图出现问题

在循环外使用g.fillRect(50,50,50,50);可以正常显示
在循环内则无法绘制
代码如下


```java
package Rich;
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.*;
public class RoutePanel extends JPanel{
    private final String FILENAME="RoutePositions.txt";
    private final int LINELENGTH=4*2+1;
    private RandomAccessFile file=null;
    private int number;
    public RoutePanel() {
        try {
            file=new RandomAccessFile(FILENAME,"rw");
        }catch(FileNotFoundException e){
            System.out.println(e.getStackTrace());
        }
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.BLACK);
        try {
            while(file.getFilePointer()<file.length()) {
                String[] pos=file.readLine().split(" ");
                int x=Integer.parseInt(pos[0]);
                int y=Integer.parseInt(pos[1]);
                g.fillRect(x, y, 50, 50);
                
            }
        }catch(IOException e) {
            System.out.println(e.getMessage());
        }
    }
    public Dimension getPrefferedSize() {
        
        return new Dimension(50,50);
    }
}


```

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-26 17:12
    关注

    引自免费微信小程序:皆我百晓生

    你好!首先,让我们看看这段Java代码中的问题。paintComponent方法试图在每次迭代时从文件读取一行数据,并将其转换为整数坐标(x、y)。然后它使用Graphics类的fillRect()方法将这些坐标绘制到图形上。

    然而,在循环内部,由于变量number未被初始化,每次迭代都会抛出一个异常。这可能是导致问题的原因之一。让我们检查并修复这个问题。

    以下是修复后的代码:

    private void paintComponent(Graphics g) {
        super.paintComponent(g);
    
        // 将循环外部的代码移动到循环开始处
        if (number != 0 && number < file.length()) { // 确保循环不会越界
            String[] pos = file.readLine().split(" "); // 从文件中读取行
            int x = Integer.parseInt(pos[0]); // 转换字符串坐标
            int y = Integer.parseInt(pos[1]);
    
            // 使用循环外部代码中的逻辑绘制矩形
            g.fillRect(x, y, 50, 50);
        }
    }
    

    这样修改后,当循环进入while循环时,代码会正确地从文件中读取数据并在paintComponent方法中绘制矩形。如果你仍然遇到问题,请提供更详细的错误信息以便我能进一步帮助你。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月26日

悬赏问题

  • ¥15 Opencv配置出错
  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?