我嵌入到JTextArea
: 的记录器遇到问题,当我调用该logger.append()
方法时,它工作得很好,但是当我使用 时System.out.println()
,我所有的法语口音都丢失了。
System.out
在这里,您可以创建记录器并重定向System.err
到它。
this.logger = new TextAreaOutputStream(jta, jsp.getVerticalScrollBar());
System.setProperty("user.langage", "fr");
PrintStream ps;
ps = new PrintStream(this.logger, true, "UTF-8");
System.setOut(ps);
System.setErr(ps);
在这里,你有TextAreaOutputStream
课。
import java.io.IOException;
import java.io.OutputStream;
import javax.swing.JScrollBar;
import javax.swing.JTextArea;
public class TextAreaOutputStream extends OutputStream {
private JTextArea jta;
private JScrollBar jsb;
public TextAreaOutputStream(JTextArea jta, JScrollBar jsb) {
this.jta = jta;
this.jsb = jsb;
}
public synchronized void append(String s) {
this.jta.append(s);
scroll();
}
public synchronized void write(int b) throws IOException {
jta.append(String.valueOf((char) b));
if (((char) b) == '\n')
scroll();
}
private synchronized void scroll() {
if ((jsb.getValue() + jsb.getVisibleAmount()) == jsb.getMaximum())
jta.setCaretPosition(jta.getDocument().getLength());
}
}
我试图将 的编码更改PrintStream
为随机编码,它改变了印刷错误的口音的外观,但我永远无法做到正确。我还尝试使用诸如\u00e9
for之类的 unicode 条目来更改重音é
,但它并没有改变任何东西。
在这里,我非常绝望地寻求你的帮助,
罗曼