Oppure

Loading
09/09/10 8:13
Java5
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:


import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;

public class StyledTextAttrMsg extends SimpleAttributeSet {

public StyledTextAttrMsg(StyledDocument styleDoc,Color txtColorForeground,Color txtColorBackground,Boolean bold, Boolean italic, String align,String icon) throws BadLocationException {
	super();
	
	//setto colore ForeGround, colore BackGround and Bold
	StyleConstants.setForeground(this,txtColorForeground);
	StyleConstants.setBackground(this,txtColorBackground);
	if (bold) {
		StyleConstants.setBold(this, true);
	}
	if (italic) {
		StyleConstants.setItalic(this, true);
	}
	
	//setto Allineamento
	if (align=="C") {
			StyleConstants.setAlignment(this, StyleConstants.ALIGN_CENTER);
	}else if (align=="SX") {
		StyleConstants.setAlignment(this, StyleConstants.ALIGN_LEFT);
	}else if (align=="DX") {
		StyleConstants.setAlignment(this, StyleConstants.ALIGN_RIGHT);
	}else if (align=="GS") {
		StyleConstants.setAlignment(this, StyleConstants.ALIGN_JUSTIFIED);
	}
	styleDoc.setParagraphAttributes(0, styleDoc.getLength(), this, false);
	
	
	//Setto imageIcon
	ImageIcon imageIcon= new ImageIcon(icon);
	StyleConstants.setIcon(this, imageIcon);

}
}



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.


private void inviaMsg(String txtMsg,Color txtColorForeground, Color txtColorBackground,Boolean bold,Boolean italic,String align, String icon) {
  try {
   StyledTextAttrMsg attr=new StyledTextAttrMsg(styleDoc,txtColorForeground,txtColorBackground,bold,italic,align,icon); 
 
    styleDoc.insertString(styleDoc.getLength(), txtMsg, attr);
    styleDoc.insertString(styleDoc.getLength(), "\n", null);
    jTP_Chat1.setDocument(styleDoc);
 
  }catch(Exception e) { 
   e.getMessage();
  }
 }



che richiamo in qs modo:


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 09/09/10 8:16
aaa