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

Java 尝试使用BufferedReader从文本文件读取以显示到JTextArea中,java,swing,bufferedreader,jtextarea,Java,Swing,Bufferedreader,Jtextarea,因此,我试图读取一个文本文件以显示到JTextArea中,但我没有运气让它显示出来。我相信问题在于我的BufferedReader的设置,但我不确定。我的SOP部分也可能有问题。感谢您的帮助 import javax.swing.*; import java.awt.*; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class WindowInvento

因此,我试图读取一个文本文件以显示到JTextArea中,但我没有运气让它显示出来。我相信问题在于我的BufferedReader的设置,但我不确定。我的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");

        }
    }
}

是的,您设置读卡器的方法是错误的。看一看更多的死亡

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

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 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
中维护。有关更多详细信息,请参阅和

尝试使用Insteads,这样做有什么好处,
textArea.read(new BufferedReader(myReader),“Inventory”)?@hovercraftfullofels可能是,但您知道您有一个读卡器仍然挂在周围(当然底层读卡器将关闭,但仍然是)@hovercraftfullofels它在不久前做了一些(简单)性能测试,通常发现(至少在小文件上)本地磁盘上的读卡器和缓冲读卡器之间没有太大区别。不是说你应该扔掉缓冲读取器…当然,缓冲读取器可能是try块资源的一部分。我不知道它是否真的会缓冲输入,这就是为什么我问这个问题。谢谢你的想法,很抱歉劫持了这个问题。1+