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:
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: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); } }
che richiamo in qs modo:codice: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(); } }
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"codice:inviaMsg(jTxtF_Msg.getText(),Color.BLACK,Color.BLUE,true,true,"SX","G:\\Programmazione\\Java\\Miei Programmi\\SimpleChat\\imgs\\Emo1.gif");
Dove sbaglio???
Grazie mille.

Rispondi quotando