我正在开发一款游戏。在此部分中,将打开一个新窗口来显示游戏说明。唯一的问题是,当 .txt 文件超过 20 行时,JTextArea 只显示一行。我是这方面的新手,所以我不确定我错过了什么。谢谢!
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 https://docs.oracle.com/javase/8/docs/api/javax/swing/text/JTextComponent.html#read-java.io.Reader-java.lang.Object-遗传read(Reader, Object)
from JTextComponent
,这将解决您的(大部分)问题
更多类似的事情
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);
如果单词超出了区域的可见边界,则允许自动换行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)