尝试从文本文件读取以使用 BufferedReader 显示在 JTextArea 中



所以我正在尝试读取一个文本文件以显示在JTextArea中,我没有运气让它出现。我相信问题出在缓冲阅读器的设置上,但我不确定。这也可能是我的SOP部分的问题。任何帮助,不胜感激。

import javax.swing.*;
import java.awt.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class WindowInventory extends JFrame {
    private JTextArea ta_inventory;
    public WindowInventory() {
        setSize(200, 500);
        setResizable(false);
        setTitle("Inventory");
        setLocation(200, 200);
        Container contentPane = getContentPane();
        contentPane.setLayout(null);
        contentPane.setBackground(Color.white);
        ta_inventory = new JTextArea();
        ta_inventory.setBounds(0, 0, 200, 350);
        contentPane.add(ta_inventory);
        try {
            BufferedReader myReader = new BufferedReader(new FileReader("Inventory.txt"));
            while (myReader.ready()) {
                String Name = myReader.readLine();
                System.out.println(Name);
                String Price = myReader.readLine();
                System.out.println(Price);
                String ID = myReader.readLine();
                System.out.println(ID);
            }
            myReader.close();
        } catch (IOException e) {
            System.out.println("Problem reading from a file");
        }
    }
}

是的,您设置阅读器的方法错误。 有关更多详细信息,请查看基本 I/O。

但是,您可以尝试使用更像...

try (BufferedReader myReader = new BufferedReader(new FileReader("Inventory.txt"))) {
    String text = null;
    while ((text = myReader.readLine()) != null) {
        System.out.println(text);
    }
} catch (IOException exp) {
    exp.printStackTrace();
}

相反。

话虽如此。 简单使用会更容易JTextArea#read

像....

JTextArea textArea = new JTextArea(10, 20);
try (Reader myReader = new BufferedReader(new FileReader("Inventory.txt"))) {
    textArea.read(myReader, "Inventory");
} catch (IOException exp) {
    exp.printStackTrace();
}

避免使用null布局,像素完美布局是现代 UI 设计中的错觉。 影响组件单个尺寸的因素太多了,您都无法控制这些因素。Swing旨在以布局管理器为核心,丢弃这些将导致无休止的问题和问题,您将花费越来越多的时间试图纠正

JTextArea这样的文本组件确实应该在JScrollPane中维护。 有关更多详细信息,请参阅如何使用滚动窗格和如何使用文本区域

最新更新