StyledDocument doc = (StyledDocument)texto.getDocument();
Style style = doc.addStyle("StyleName", null);
int i=0,j=1; // Juego de posiciones para detectar emoticonos
if (sLinea.indexOf(":")>0) // Es mensaje de conversación, está separado el nick del mensaje con :
{
String [] aux = sLinea.split(":", 2);
i=aux[1].indexOf(":",j); // Posición donde encontramos los : para ver si es emoticono
doc.insertString(doc.getLength(), aux[0]+": ",null); // El donde se dice "usuario:" para identificar el mensaje
if (aux[1].length() > 2) // Escribimos : pero nada más, no buscar si la siguiente palabra constituye emoticono
while (i>0) // mientras tengamos referencias a que se encuentran : en el mensaje
{
doc.insertString(doc.getLength(), aux[1].substring(j,i),null); // escribimos hasta llegar al punto de los :
try
{
if (ic.contains(aux[1].substring(i,i+2))) // Está la combinación : + caracter en el vector de emoticonos reconocidos
{
StyleConstants.setIcon(style, new ImageIcon(iconos +aux[1].substring(i,i+2))); // Creamos el icono
doc.insertString(doc.getLength(), "ignored text", style); // lo metemos
}
else
doc.insertString(doc.getLength(), aux[1].substring(i,i+2),null); // no contiene emoticono reconocido, escribimos tal cual
j=i+2; // incrementamos la próxima posición de lectura para buscar emoticonos
i=aux[1].indexOf(":",j); // miramos si tenemos más : en el mensaje
}
catch (StringIndexOutOfBoundsException e) // fuera de rango, forzamos a que no siga buscando y que escriba lo que le quede
{
i = 0;
}
}
doc.insertString(doc.getLength(), aux[1].substring(j)+"\n",null); // acabamos escribiendo el resto del texto
texto.setCaretPosition(texto.getDocument().getLength()); // para que el scroll vaya avanzando
}
else // Mensaje de usuario conectado/desconectado
doc.insertString(doc.getLength(), sLinea+"\n",null);
jueves, 17 de marzo de 2011
Emoticonos: código final
Aunque puede parecer un poco raro... pero un cacho de código extraído de mi fuente para poder coger lo que se mete en un JTextPane, y teniendo un Vector de emoticonos, poder añadirlo :)
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario