如何用java读取txt文件并用表格显示出来?

学校的任务,要求用java读取txt文件后将内容用图表的形式表示出来,表格不能使用表哥组件,要用Graphics类的画图函数手绘。
我想求教于各位,读取txt文件之后,如何将其信息一一填入图表中啊。读取的这部分和画图的这部分用什么方法可以连接起来呢?
本人没什么基础,希望各位高抬贵手,指点一二!

是怎样的 txt 文件?

Graphics类中有drawString方法,文档如下:
drawString
public abstract void drawString​(String str, int x, int y)
使用此图形上下文的当前字体和颜色绘制由指定字符串给出的文本。 最左边的字符的基线位于此图形上下文的坐标系中的位置( x , y )。
参数
str - 要绘制的字符串。
x - x坐标。
y - y坐标。
异常
NullPointerException - 如果 str是 null 。
另请参见:
drawBytes(byte[], int, int, int, int) , drawChars(char[], int, int, int, int)

【以下回答由 GPT 生成】

### 问题解答

要使用Java读取文本文件并以表格形式显示内容,你可以按照以下步骤进行操作:

1. 首先,你需要创建一个用于绘制表格的方法。你可以使用`Graphics`类的绘图功能来手绘表格。以下是一个简单的示例代码,用于绘制一个具有指定行数和列数的表格:

```java
import java.awt.*;

public class TableDrawer {
    public static void drawTable(Graphics g, int rows, int cols) {
        int x = 50; // 表格左上角的X坐标
        int y = 50; // 表格左上角的Y坐标
        int cellWidth = 100; // 单元格宽度
        int cellHeight = 30; // 单元格高度

        for (int i = 0; i <= rows; i++) {
            int rowY = y + i * cellHeight;
            g.drawLine(x, rowY, x + cols * cellWidth, rowY); // 绘制表格的横线
        }

        for (int i = 0; i <= cols; i++) {
            int colX = x + i * cellWidth;
            g.drawLine(colX, y, colX, y + rows * cellHeight); // 绘制表格的竖线
        }
    }
}
  1. 然后,你需要使用BufferedReader类来读取文本文件的内容。以下是一个简单的示例代码,用于读取文本文件的每一行并将其存储在一个List集合中:
import java.io.*;
import java.util.*;

public class FileReader {
    public static List<String> readLines(String filePath) throws IOException {
        List<String> lines = new ArrayList<>();

        try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
            String line;
            while ((line = br.readLine()) != null) {
                lines.add(line);
            }
        }

        return lines;
    }
}
  1. 最后,结合上述两个步骤,你可以在绘制表格的同时,将读取的文本文件信息逐一填入表格中。以下是一个简单的示例代码,用于读取文本文件并在表格中显示其中的内容:
import java.awt.*;
import javax.swing.*;

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Table Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);

                // 绘制表格
                TableDrawer.drawTable(g, 5, 3); // 假设表格大小为5行3列

                // 读取文本文件并在表格中显示内容
                try {
                    int x = 50; // 表格左上角的X坐标
                    int y = 50; // 表格左上角的Y坐标
                    int cellWidth = 100; // 单元格宽度
                    int cellHeight = 30; // 单元格高度

                    List<String> lines = FileReader.readLines("path/to/your/text/file.txt");

                    for (int i = 0; i < lines.size(); i++) {
                        String line = lines.get(i);
                        int rowY = y + (i + 1) * cellHeight; // 行的Y坐标
                        int colX = x + cellWidth / 2; // 列的X坐标(居中)

                        g.drawString(line, colX, rowY);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        };

        frame.add(panel);
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}

请注意,以上示例代码是基于Swing框架实现的,所以你需要在IDE中添加Swing库以及编写适合的初始化代码。此外,你需要替换代码中的相关文件路径为你实际使用的文件路径。

希望以上解答能够帮助到你,如有任何疑问,请随时追问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^