Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Aiuto con formattazione Testo in jTextPane
Forum - Java - Aiuto con formattazione Testo in jTextPane

Avatar
Java5 (Ex-Member)
Rookie


Messaggi: 23
Iscritto: 19/10/2009

Segnala al moderatore
Postato alle 10:13
Giovedė, 09/09/2010
Ciao a tutti
ho inserito nella mia chat una jTextPane per la visualizzazione dei messaggi inviati dai vari utenti.
Ho decisco di creare una classe per accentrare l'intera gestione del testo (ex: grassetto, allineamento, italic e gestione colore) ed eventuali icone.
Funziona tutto tranne che il backGroundColor.
Vi posto la classe che ho fatto:

Codice sorgente - presumibilmente Java

  1. import java.awt.*;
  2. import javax.swing.*;
  3. import javax.swing.text.*;
  4.  
  5. public class StyledTextAttrMsg extends SimpleAttributeSet {
  6.  
  7. public StyledTextAttrMsg(StyledDocument styleDoc,Color txtColorForeground,Color txtColorBackground,Boolean bold, Boolean italic, String align,String icon) throws BadLocationException {
  8.         super();
  9.        
  10.         //setto colore ForeGround, colore BackGround and Bold
  11.         StyleConstants.setForeground(this,txtColorForeground);
  12.         StyleConstants.setBackground(this,txtColorBackground);
  13.         if (bold) {
  14.                 StyleConstants.setBold(this, true);
  15.         }
  16.         if (italic) {
  17.                 StyleConstants.setItalic(this, true);
  18.         }
  19.        
  20.         //setto Allineamento
  21.         if (align=="C") {
  22.                         StyleConstants.setAlignment(this, StyleConstants.ALIGN_CENTER);
  23.         }else if (align=="SX") {
  24.                 StyleConstants.setAlignment(this, StyleConstants.ALIGN_LEFT);
  25.         }else if (align=="DX") {
  26.                 StyleConstants.setAlignment(this, StyleConstants.ALIGN_RIGHT);
  27.         }else if (align=="GS") {
  28.                 StyleConstants.setAlignment(this, StyleConstants.ALIGN_JUSTIFIED);
  29.         }
  30.         styleDoc.setParagraphAttributes(0, styleDoc.getLength(), this, false);
  31.        
  32.        
  33.         //Setto imageIcon
  34.         ImageIcon imageIcon= new ImageIcon(icon);
  35.         StyleConstants.setIcon(this, imageIcon);
  36.  
  37. }
  38. }



All'interno della mia GUI, ho poi implementato un metodo: "InviaMsg" che istanzia un oggetto della classe di cui sopra e gli passa tutti i parametri necessari per la gestione del testo.

Codice sorgente - presumibilmente Java

  1. private void inviaMsg(String txtMsg,Color txtColorForeground, Color txtColorBackground,Boolean bold,Boolean italic,String align, String icon) {
  2.   try {
  3.    StyledTextAttrMsg attr=new StyledTextAttrMsg(styleDoc,txtColorForeground,txtColorBackground,bold,italic,align,icon);
  4.  
  5.     styleDoc.insertString(styleDoc.getLength(), txtMsg, attr);
  6.     styleDoc.insertString(styleDoc.getLength(), "\n", null);
  7.     jTP_Chat1.setDocument(styleDoc);
  8.  
  9.   }catch(Exception e) {
  10.    e.getMessage();
  11.   }
  12.  }



che richiamo in qs modo:

Codice sorgente - presumibilmente Java

  1. inviaMsg(jTxtF_Msg.getText(),Color.BLACK,Color.BLUE,true,true,"SX","G:/Programmazione/Java/Miei Programmi/SimpleChat/imgs/Emo1.gif");



Praticamente tutti gli argomenti vengono passati correttamente alla classe ed il testo + icona vengono posizionati, colorati etc correttamente! L'unica cosa che non riesco a fare č quella di evidenziare il testo attraverso il paramento "txtColorBackground"
Dove sbaglio???
Grazie mille.

Ultima modifica effettuata da Java5 il 09/09/2010 alle 10:16
PM