[英]Java Swing JTextArea not working
我正在玩游戏。 在这一部分中,将打开一个新窗口以显示游戏说明。 唯一的问题是,当多于20行时,JTextArea仅显示.txt文件的一行。 我是这个新手,所以不确定自己缺少什么。 谢谢!
class Instruction extends JFrame
{
private JTextArea read;
private JScrollPane scroll;
Instruction(String x)
{
super(x);
try
{
BufferedReader readers = new BufferedReader (new FileReader("instructions.txt")); //read from file
read = new JTextArea(readers.readLine());
scroll = new JScrollPane(read);
read.setFont(new Font("Comic Sans MS", Font.BOLD, 16)); // change font
read.setEditable(false);
add(read);
}
catch(IOException exception)
{
exception.printStackTrace();
}
}
}
BufferedReader#readLine
仅读取下一行(如果没有更多行要读取,则返回null
)
如果仔细看一下JavaDoc,您会发现JTextArea
继承了JTextComponent
read(Reader, Object)
,它将解决(大多数)问题
更像是
read = new JTextArea();
try (Reader reader = new BufferedReader(new FileReader("instructions.txt"))) {
read.read(reader, null);
} catch (IOException exception) {
exception.printStackTrace();
}
scroll = new JScrollPane(read);
read.setFont(new Font("Comic Sans MS", Font.BOLD, 16)); // change font
read.setEditable(false);
add(read);
可能会实现您想要做的事情
另外,您可能需要致电
read.setLineWrap(true);
read.setWrapStyleWord(true);
如果单词超出了该区域的可见边界,则可以自动换行。
您仅从文件读取一行。 尝试使用它代替加载整个文件。
List<String> lines;
try {
lines = Files.readAllLines();
} catch (IOException ex) {
ex.printStackTrace();
}
StringBuilder text = new StringBuilder();
for (String line : lines) {
text.append(line);
}
read = new JTextArea(text.toString());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.