Ein Chatfenster mit Emoticons etc.mit welcher Komponente?

Status
Nicht offen für weitere Antworten.

Math55

Bekanntes Mitglied
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).

ne idee?

vielen dank :)
 

Math55

Bekanntes Mitglied
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?

viele grüße
 

Sky

Top Contributor
Also, ich glaube, wenn Du auch Bilder einfließen lassen willst, so musst Du ein javax.swing.JTextPane benutzen.

Man muss keinen HTML-Text übergeben... guck Dir mal Style usw. (bspw. StyledDocument) an.
 

Math55

Bekanntes Mitglied
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...

danke :)
 

m@nu

Bekanntes Mitglied
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...
 

Math55

Bekanntes Mitglied
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?

danke:)
 

m@nu

Bekanntes Mitglied
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 :)
 

Math55

Bekanntes Mitglied
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
 

m@nu

Bekanntes Mitglied
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...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Swing Chatfenster AWT, Swing, JavaFX & SWT 4
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
dereki2000 Welcher Methodenaufruf bei Hover, click,... AWT, Swing, JavaFX & SWT 5
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
Z Swing Welcher Layoutmanager bei ScrollPane? AWT, Swing, JavaFX & SWT 4
N Welcher LayoutManager AWT, Swing, JavaFX & SWT 16
G Welcher Teil der Java Standard Edition API ist für das Zeichnen von einfachen Grafiken gedacht? AWT, Swing, JavaFX & SWT 3
SexyPenny90 Welcher LayoutManager erfüllt meine Bedingung AWT, Swing, JavaFX & SWT 7
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
P LayoutManager welcher LM ist der richtige? AWT, Swing, JavaFX & SWT 3
A Welcher Layout Manager ist hier richtig? AWT, Swing, JavaFX & SWT 3
S LayoutManager Welcher Manager AWT, Swing, JavaFX & SWT 2
R KeyListener - welcher Komponente hinzufügen AWT, Swing, JavaFX & SWT 5
S Swing DnD: Wie finde ich heraus, von welcher Zelle aus im JTable der Drag gestartet wurde? AWT, Swing, JavaFX & SWT 3
M Swing Bild wird nie angezeigt, egal mit welcher Methode! AWT, Swing, JavaFX & SWT 10
C Abfragen welcher Tab aktiv ist? AWT, Swing, JavaFX & SWT 2
V Welcher Listener für JTable? AWT, Swing, JavaFX & SWT 3
A JToolBar: Welcher Button wurde gedrückt? AWT, Swing, JavaFX & SWT 5
G welcher Jtogglebutton geklickt? AWT, Swing, JavaFX & SWT 3
S Welcher Listener ? In JTable mehrere Zeilen markieren & AWT, Swing, JavaFX & SWT 2
J jTable, welcher listener für Änderung der Spaltenbreite AWT, Swing, JavaFX & SWT 2
M Welcher Listener für JLabel? AWT, Swing, JavaFX & SWT 4
M Welcher Layout Manager? AWT, Swing, JavaFX & SWT 5
T JTextArea, in welcher Zeile befindet sich der Cursor AWT, Swing, JavaFX & SWT 25
J Welcher Layoutmanager? AWT, Swing, JavaFX & SWT 20

Ähnliche Java Themen


Oben