J'ai un simple système de chat client-serveur que je veux coder en couleur afin que les messages du client et les messages du serveur soient affichés dans différentes couleurs. Je donne les résultats suivants:Comment créer des chats codés en couleur entre le client et le serveur à l'aide de JTextPane?
try {
String messageout="";
messageout=jTextField1.getText();
jTextField1.setText("");
appendToPane(jTextPane1,"\n"+"client: "+messageout,Color.BLUE);
dos.writeUTF(messageout);
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
dos est le flux de sortie de données
et:
private void appendToPane(JTextPane tp, String msg, Color c)
{
StyleContext sc = StyleContext.getDefaultStyleContext();
AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c);
aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console");
aset = sc.addAttribute(aset, StyleConstants.Alignment, StyleConstants.ALIGN_JUSTIFIED);
int len =tp.getDocument().getLength();
tp.setCaretPosition(len);
tp.setCharacterAttributes(aset, false);
tp.replaceSelection(msg);
tp.setText(tp.getText()+msg);
}
Le serveur a le code simlar qui définit la couleur au vert plutôt que bleu . Le problème est que je veux que les messages clients soient affichés en bleu et que les messages du serveur soient affichés en vert, alors que pour le moment, tous les messages sont affichés en bleu dans le client et tous les messages sont affichés en vert . Je veux ce qui suit: 'client: blaablaa (en bleu)' 'serveur: blaablaa (en vert)'
Quelqu'un peut-il aider?
EDIT: lecture client du serveur (couleur enlevé jusqu'à ce que je trouve une solution réelle)
s=new Socket("localhost",1000);
dis=new DataInputStream(s.getInputStream());
dos=new DataOutputStream(s.getOutputStream());
while(!msgin.equals("bye")){
msgin=dis.readUTF();
jTextPane1.setText(jTextPane1.getText()+"\n"+"server:"+msgin);
Je veux ajouter un contexte de couleur à la dernière ligne de code.
Edition - en utilisant appendToPane plutôt que setText (rien affiché, lorsque je retire la dernière setText de appendToPane.
ss = new ServerSocket(1000);
s = ss.accept();
dis=new DataInputStream(s.getInputStream());
dos=new DataOutputStream(s.getOutputStream());
while(!msgin.equals("bye")){
msgin=dis.readUTF();
appendToPane(jTextPane1,"\n"+"client: "+msgin,Color.RED);
ET:
String messageout="";
messageout=jTextField1.getText();
jTextField1.setText("");
appendToPane(jTextPane1,"\n"+"server:"+messageout,Color.BLUE);
//jTextPane1.setText(jTextPane1.getText()+"\n"+"server:"+messageout);
dos.writeUTF(messageout);
Passez la couleur avec le message? –
Où est la partie où vous ajoutez les messages du serveur à 'JTextPane' de votre client? – RealSkeptic
@RealSkeptic. Code ajouté. Couleur enlevée jusqu'à ce que je trouve une solution. Gilbert Le Blanc - c'est exactement la question. Comment puis-je ajouter de la couleur aux messages provenant du serveur/client? –