我正在尝试从文本文件中读取文本,我已经可以使用system.out.print在系统上打印它。但是,如果我从文本文件中读取的文本中设置JTextArea的文本,则会显示“线程中的异常”主“java.lang.NullPointerException”。它实际上在打印行中运行良好,我已经可以阅读我想要的内容但是,我不能将此文本放在JTextArea上。我该怎么办?
这是我的代码:
package mdiforms;
import java.io.BufferedReader;
import java.io.FileReader;
public class FR
{
public static void main (String[] args) throws Exception
{
String path = ("C:/Users/Pasusani/Desktop/try.txt");
FileReader file = new FileReader(path);
BufferedReader reader = new BufferedReader(file);
String text = "";
String line = reader.readLine();
while (line !=null)
{
text += line;
line = reader.readLine();
String setText = line.substring(0,1);
txtLine.setText(setText);
}
System.out.println(text);
}
}
答案 0 :(得分:0)
您的JTextArea txtLine对象未初始化,请尝试使用txtLine = new javax.swing.JTextArea();
答案 1 :(得分:0)
将输出流重定向到jTextArea并设置输出流,如下所示:
....
{
OutputStream out1 = new OutputStream() {
@Override
public void write(final int b) throws IOException {
updateTextPane(String.valueOf((char) b));
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
updateTextPane(new String(b, off, len));
}
@Override
public void write(byte[] b) throws IOException {
write(b, 0, b.length);
}
};
System.setOut(new PrintStream(out1, true));
}
....
private void updateTextPane(final String text) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Document doc = jTextArea.getDocument();
try {
doc.insertString(doc.getLength(), text, null);
} catch (BadLocationException e) {
throw new RuntimeException(e);
}
}
});
}
现在使用System.out.println(text);
它会将文本打印到jTextArea
而不是在控制台上。