Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ein Chatfenster mit Emoticons etc.mit welcher Komponente?
hallo, ich möchte einen kleinen chat programmieren und frage mich gerade, wie ich das mit den emoticons am besten machen sollte. welche komponente nimmt man da? sie sollte eben an jeder stelle bilder anzeigen können sowie verschiedenfarbigen/fetten/kursiven/unterschieldich großen text anzeigen können. also so wie bei icq oder realchat (realchat.com).
hallo, ja, das ganze ist ein applet (client) und dann noch der server. ich hab das auch schon gemacht, aber eben erstmal mit ner jtextarea. aber die unterstützt das ja nicht. ein jeditorpane könnte das, aber da muss man ja immer htmltext übergeben, oder?
hallo, aha, du hast recht. wie könnte ich das jetzt mit den icons machen? also jmand tippt einen smilie per keyboard ein und es soll dann nach edm absenden ein gif oder so erscheinen. so wie im forum...
du musst deinen chattext im client nach emoticon-zeichenfolgen abklappern...
ab besten definierst du irgendwo, welche zeichen-folgen welches smiley ergeben, und durchsuchst auf grund von dieser liste deinen text
anschliessend (resp. währenddem ) gibst du an den entsprechenden position ein bild anstatt text aus...
hi, ich habs ...funktioniert prima. jetzt allerdings das problem mit den farben. also sagen wir mal, ich will jetzt
ein wort rot schreiben und die anderen gelb. alles was in <> steh fett und blau. wie geht das?
genau gleich
du musst deinem Document beibringen wie es den text zu interpretieren hat, und gibst das ganze schlussendlich entsprechend aus...
wie man text einfärben/formatieren kann in der JTextPane wüsst' ich jetzt nicht direkt auswendig... denke da kann dir google weiterhelfen
aha, alles klar. allerdings klappt das mit den emoticons noch icht so richtig. sagen wir mal ich tippe sowas ein:
"das ist ein satz mit smilie am ende : )"
dann klappt das, er macht hinten das passende bild hin.
gebe ich aber sowas ein:
"das ist ein satz mit lustigem smilie : ) und traurigem smilie : (, wie man sieht"
dann klappt das nicht. ich parse zur zeit den text nach : ) und : ( und so weiter mit charAt(index).
also so:
Code:
for(int i=0;i<text.length();i++){
char currentChar = text.charAt(i);
char nextChar=' ';
if(i<text.length()){
nextChar = text.charAt(i+1);
}
String emoticon = ""+currentChar+nextChar;
if(!emoticon.equals(":)")){
//das hier klappt dann immer nicht
//chatArea.replaceSelection(text);
}else{
emoter = new ImageIcon(getClass().getResource("emoticons/smile.gif"));
chatArea.insertIcon(emoter);
}
if(!emoticon.equals(":(")){
//das hier klappt dann immer nicht
//chatArea.replaceSelection(text);
}else{
emoter = new ImageIcon(getClass().getResource("emoticons/sad.gif"));
chatArea.insertIcon(emoter);
}
}
aber dann kommt der text logischerweise zu oft...ne idee, wie man das macht?
es soll dann praktisch so aussehen: das ist ein satz mit lustigem smilie und traurigem smilie , wie man sieht
hmm, ich denke da geht etwas schief mit dem zusmmenstückeln...
ich hatte früher in VB6 mal sowas implementiert... dort hab ich das etwa so gemacht:
Code:
String input = "Dies ist ein Text mit Smileys :-) ... kann auch :-( sein";
ArrayList emoticons = new ArrayList();
emoticons.add(":-)");
emoticons.add(":-(");
for(int i = 0, l = input.length(); i < l; i++) {
for(int j = 0, m = emoticons.size(); j < m; j++) {
String econ = (String)emoticons.get(j);
if(!(econ.length() > input.length()-i)) {
if(input.substring(i, i+econ.length()).equals(econ)) {
System.out.println("found " + econ + " at " + i);
}
}
}
}
vielleicht hilft dir das weiter.
diese lösung nimmt nicht einfach das nächste zeichen hinzu, sonder sucht basierend auf der länge der entsprechenden emoticons nach einer übereinstimmung. so kannst du ganz einfach auch verschieden lange smileycodes integrieren.
um einen code mit einem bild zu verbinden, kannst du in der ArrayList z.b. anstatt des strings eine kleine datenstruktur ablegen, welche den code-string sowie den nötigen bildnamen enthält...