JTextArea - テキスト領域

トップ > チップス > JTextArea - テキスト領域
2012-02-13, jtextarea

/tips/java/swing/jtextarea **Stream経由で文字列を書き込む JTextAreaに文字列を出力するOutputStreamの実装例です(ほぼ参考リンク先のコードと同じです)。書籍「Java Swing Hacks」にも同様の例がありますが、残念ながら多バイト文字のエンコードを考慮しておらず、文字化けが発生することが多々あります。下記例では、ByteArrayOutputStreamにバッファしているため、文字化けは発生しません。

:public class JTextAreaOutputStream extends OutputStream { : private ByteArrayOutputStream os; : : private JTextArea ta; : : private String encoding; : : public JTextAreaOutputStream(JTextArea ta,String encoding){ : super(); : this.ta = ta; : this.encoding = encoding; : this.os = new ByteArrayOutputStream(); : } : : @Override : public void write(int b) throws IOException { : this.os.write(b); : } : : @Override : public void flush() throws IOException { : ta.append(new String(this.os.toByteArray(), this.encoding)); : this.os.reset(); : } :}

:JTextAreaOutputStream taos = new JTextAreaOutputStream(textArea,"UTF8"); :PrintWriter out = new PrintWriter(taos); :// テキストエリアに文字列を書き込む :out.println("Hello.");

-参考 --{link:http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=38603&forum=12&start=16} --Java Swing Hacks 11章

この記事は役に立ちましたか?