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

时间:2015-03-14 04:37:15

标签: 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 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");

        }
    }
}

1 个答案:

答案 0 :(得分:2)

是的,您设置阅读器的方法是错误的。查看Basic 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内维护。有关详细信息,请参阅How to Use Scroll PanesHow to Use Text Areas