Il semble très étrange de diriger un OutputStream à ce qui semble être un champ de texte dans une interface graphique quelconque. Êtes-vous sûr que c'est ce que vous voulez vraiment? Si vous voulez capturer quelque chose en cours d'écriture sur un Writer, un StringWriter est généralement approprié. Vous laissez simplement l'écriture arriver, puis appelez le toString() dessus pour obtenir le résultat final. Si vous avez vraiment sont à la recherche d'une façon d'écrire des choses à un champ de texte tel qu'il est écrit à un écrivain/OutputStream, puis de vérifier cela:
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);
}
}
Note 1: Utiliser le bon encodage en place de UTF- 8.
Note 2: Tandis que je ralentis cela avec un Thread.sleep(), écrire un caractère à la fois dans un champ est quelque peu inutile en soi parce que vous êtes constamment en train de créer et de jeter des Strings. Faire une petite quantité de tampons, comme utiliser un StringWriter comme je l'ai mentionné précédemment, pourrait être une meilleure approche à moins que vous ne soyez après le "live feed" sentir que les choses apparaissent quand elles sont lues.
Ou simplement 'outputField.setText (Integer.toString (b)) '. –