Slyh: char in string umwandeln.....irgendwas mache ich falsch.

Beitrag lesen

Hallo,

try {
         URL url = new URL ("http://www.domain.tld/");
         Reader s = new InputStreamReader(url.openStream());
         int c;
         char ch;
         while ( (c = s.read()) != -1) {
                ch = (char)c;
                ta.setText((new Character(ch).toString()));

Das letzte Zeichen, das du von domain.tld einliest, ist vermutlich
einen Zeilenumbruch. Und wenn du dir mal den Text ausgeben würdest,
der nach Durchlauf der while-Schleife in der TextArea stehst, würdest
du sehen, daß dort (vermutlich) nur genau dieser eine Zeilenumbruch
steht.
Warum? Weil setText den gesamten Text _ersetzt_, und nicht etwa anhängt.
Nehmen wir an, da würde "Hallo" im Stream geliefert werden.
Dann würde jetzt nacheinander "H", "a", "l", "l" und "o" in die TextArea
geschrieben werden -- ersetzend. Zum Schluß würdest du deshalb
natürlich nur "o" sehen.

Verwendest du JTextArea oder TextArea? Du solltest JTextArea verwenden.
Dort gibt es eine Methode "append(String)". Die tut das, was du willst,
nämlich Strings zur TextArea hinzufügen.

Allerdings ist das hoooochgradig unperformant.

Was du stattdessen tun solltest: Lies die Daten, die da vom InputStream
kommen, komplett in einen String ein und weise diesen _nach_ der
while-Schleife der TextArea zu. Dann wieder mit setText(String).

ta.setText((new Character(ch).toString()));

Hier erzeugst du übrigens bei jedem(!) eingelesenen Zeichen ein
Character-Objekt, nur um direkt danach daraus jedesmal(!) einen
String zu bauen.

Mal davon abgesehen, daß die Erzeugung eines String-Objekts bei jedem
Durchlauf hochgradig unperformant und ressourcenfressend ist, ist
die Erzeugung des Character-Objektes völlig unnötig, da die Klasse
Character eine statische Methode toString(char) bietet, die genau
dasselbe tut, nämlich den übergebenen char in einen String umwandelt.

Also:
   ta.setText(Character.toString(ch));

Aber, wie gesagt, daß solltest du ohnehin nicht so tun...

Gruß
Slyh