一个用户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 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀