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:
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.
che richiamo in qs modo:
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.
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