wie kann ich einen String, der aus mehreren Ascii-Zeichen besteht(die durch Kommas getrennt sind) in ihren Buchstaben-WErt umwandeln und in einem JLabel ausgeben?
Hier mein Code soweit :
Java:
String trenner =",";String text1 = newnode.getChildNodes().item(3).getChildNodes().item(1).getTextContent();String[] result = text1.split(trenner);for(String s:result){System.out.println(s);}
Die Ausgabe ist dann :
20
20
20
20
20
20
20
20
20
20
diese sollen jetzt umgewandelt und nebeneinander als buchstaben ( Ich weiß die 20 ist leer in der ascii tabelle aber falls später andere zeichen stehen) in einem JLabel ausgegeben werden....
String trenner =",";String text1 = newnode.getChildNodes().item(3).getChildNodes().item(1).getTextContent();String[] result = text1.split(trenner);for(String s:result){int a =Integer.parseInt(s);char c =(char) a;System.out.println(c);}
Zurück zum zweiten Teil meiner Frage :
aber wie schreibe ich die jetzt nebeneinander und gebe sie in einem JLabel aus ?
Java:
JLabel text8001 =newJLabel();//text8001 = ??? Wie weise ich dem den inhalt von c nebeneinander zu ???
Ich habe es jetzt doch noch hinbekommen,
aber dabei ist ein anderes Problem aufgetreten...
Hier erstmal Code :
Java:
String[] result1 ={"29","29","29","29","29","29"};for(int i=0; i<result1.length;i++){String str = result1[i];int ii =Integer.parseInt(str,16);char c =(char) ii;System.out.println("char="+c+"<- ");String s1 =Character.toString(c);
texttest =newLabel(s1);}
Nun steht in meinem Label nur einmal das Zeichen " ) " ...
Obwohl es ja 6 sein sollten... wie muss ich das schreiben ? es will mir grad einfach nicht einfallen
verabschiede die bitte generell für alle Zeiten davon, Label oder andere GUI-Objekte ständig neu zu erzeugen, dass sind im Vergleich zu Strings recht komplexe mit hunderten internen Variablen und Verknüpfungen, außerdem hast du Probleme diese in die GUI korrekt einzufügen usw.,
das erste Label ist immer noch gut, da kann man auch den Text ändern..
-----
und dann noch den Kopf benutzen zum Überlegen: was du im Label-Konstruktor oder an setText() übergibst ist der neue Text,
das vorherige wird überschrieben, sammle doch erstmal den ganzen Text in einem String oder StringBuilder zusammen (Beispiele wurden hier sogar schon gepostet)
und ganz am Ende nach allen Schleifen usw. übergibst du das EINE ERGEBNIS an die richtige Stelle
Wenn du den Code vernünftig einrücken würdest, hättest du den Fehler möglicherweise schon gefunden:
Du generierst 6 mal einen String (Zeile 12) und 6 Mal ein Label (Zeile 13). Der String und das Label des letzten Durchlaufs verschwinden sofort im Java-Nirwana und werden vom GarbageCollector vernichtet)
Java:
privatestaticvoidgaga(){String[] result1 ={"29","29","29","29","29","29"};JLabel texttest;for(int i=0; i<result1.length;i++){String str = result1[i];int ii =Integer.parseInt(str,16);char c =(char) ii;System.out.println("char="+c+"<- ");String s1 =Character.toString(c);
texttest =newJLabel(s1);}}
Dann müssen drei Sachen gemacht werden: String entlang dem "," aufteilen, einzelne Teile parsen zu int, einzelne int konvertieren zu char und ausgeben.
Java:
for(String s :"65,65,65,65,65".split(",")){System.out.println((char)Integer.parseInt(s));}
Das wäre die Kurzform. Es könnte sein, das parseInt() eine Exception gibt oder der Cast unerwünschte Ergebnisse bringt.
Ich habe es noch hinbekommen. Was hier falsch verstanden wurde ist, das ich die Ausgabe nicht in der Konsole und untereinander haben wollte, sondern in einem Label nebeneinander.
Java:
String s1="";Label texttest =newLabel();String trenner =",";String text1 = newnode.getChildNodes().item(3).getChildNodes().item(1).getTextContent();String[] result = text1.split(trenner);for(int i=0; i<result.length;i++){String str = result[i];int ii =Integer.parseInt(str,16);char c =(char) ii;
s1 +=Character.toString(c);}
texttest =newLabel(s1);