[英]Trying to read from a text file to display into a JTextArea using a BufferedReader
因此,我试图读取文本文件以显示到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");
}
}
}
是的,您设置阅读器的方法是错误的。 查看基本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
维护。 有关更多详细信息,请参见如何使用滚动窗格和如何使用文本区域 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.