1

J'essaie d'utiliser la méthode write (int) de java.io.OutputStream, et je n'arrive pas à comprendre comment convertir int dans une chaîne correctement.Java Aide: Encodage des caractères Aide - int à Chaîne

public PrintWriter out = new PrintWriter(new OutputStream() { 

    @Override 
    public void write(int b) throws IOException { 
     outputField.setText(/* I need a byte[] or char[] or string from this int */); 
    } 

}); 

J'ai vraiment besoin d'aide pour cela. J'ai essayé d'utiliser une méthode pour faire un byte [] à partir d'un int mais cela a fait que le texte a été foiré avec beaucoup d'espaces.

Répondre

0

Avez-vous essayé cette

outputField.setText(""+b); 

ou

outputField.setText(Integer.valueOf(b).toString()); 
+2

Ou simplement 'outputField.setText (Integer.toString (b)) '. –

0

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.