ある種の GUI のテキスト フィールドのように見えるものに OutputStream を送信するのは非常に奇妙に思えます。それが本当に欲しいものだと確信していますか?Writer に書き込まれているものをキャプチャしたい場合は、通常、StringWriterが適切です。書き込みを実行させてから、toString()を呼び出して最終結果を取得します。Writer/OutputStream に書き込まれるように、テキスト フィールドに内容を書き込む方法を本当に探している場合は、これを確認してください。
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame("I be streamin!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField field = new JTextField();
frame.add(field);
frame.pack();
frame.setVisible(true);
System.out.println("Enter stuff to write to the field");
char c;
InputStreamReader in = new InputStreamReader(System.in, "UTF-8");
while ((c = (char) in.read()) != -1) {
String currentText = field.getText();
field.setText(currentText + c);
Thread.sleep(250);
}
}
注 1: UTF-8 の代わりに適切なエンコーディングを使用してください。
注 2: Thread.sleep() を使用してこれを遅くしましたが、文字列を常に作成して破棄しているため、一度に 1 つの文字をフィールドに書き込むこと自体がやや無駄です。先に述べたように StringWriter を使用するなど、少量のバッファリングを行うことは、読み込まれたときに何かが表示される「ライブ フィード」の感覚を求めていない限り、より良いアプローチになる可能性があります。