我想寫一個程序,重定向System.out到JTextArea(它不一定是一個JTextArea),但是當我打電話System.out.println(「 !測試「)輸出到文本區是像這樣:Java - 與自定義OutputStream PrintStream奇怪的行爲
\n
st!
\n
我的OutputStream代碼:
package gui;
import java.awt.*;
import java.io.*;
import javax.swing.text.*;
public class LogOutputStream extends OutputStream
{
public void write(final int b) throws IOException
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
write0(b);
}
});
}
public void write(final byte[] b, final int off, final int len)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
write0(b, off, len);
}
});
}
public void write(final byte[] b)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
write0(b);
}
});
}
private void write0(int b)
{
Document doc = FernflowerGUI.frame.textArea.getDocument();
try
{
doc.insertString(doc.getLength(), String.valueOf((char)b), null);
}
catch(BadLocationException impossible)
{
}
}
private void write0(byte[] b, int off, int len)
{
Document doc = FernflowerGUI.frame.textArea.getDocument();
try
{
doc.insertString(doc.getLength(), new String(b, off, len), null);
}
catch(BadLocationException impossible)
{
}
}
private void write0(byte[] b)
{
write0(b, 0, b.length);
}
}
創建的PrintStream內碼:
PrintStream ps = new PrintStream(new LogOutputStream(), true);
任何人都可以告訴我地球上發生了什麼?
這代碼在這裏顯示編譯錯誤。爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-04-20 08:15:51
如何調用寫入函數?它有什麼論點? – Zyerah 2013-04-20 08:16:11
「\ n」是逐字顯示的嗎? 'getDocument()'返回的類型是什麼,以及它是如何處理換行符的? – 2013-04-20 08:18:28