[Java] Chat: Mise en gras

Statut
N'est pas ouverte pour d'autres réponses.

Angy

Elite
Bonjour!

Je suis entrain de développer un chat en Java, mais j'ai un petit problème du côté de la mise en gras du texte.

Pour envoyer un message, les utilisateurs doivent écrire un JTextField, et les messages s'ajoutent dans un JTextArea. Et donc lorsque je veux mettre en gras, je fais un événement sur un RadioButton, et mon texte dans mon JTxtField est bien mis en gras, mais mon problème, c'est: Comment faire pour que mon message soit aussi en gras dans mon JTextArea? (dans mon cas, il s'ajoute en simple).

Merci :)
 

[n]00bie

L'homme qui post jamais
Je suis pas sur que ce soit bon mais en regardant la java doc, sers toi de setFont(Font font) sur ton jtextarea

Tu peux paramètrer la font avec la police et le style que tu veux, en l'occurence BOLD =]

Edit: en relisant ton message je pense pas que ce soit ca que tu cherche pour resoudre ton probleme :dead:
 
1er
OP
Angy

Angy

Elite
Oui, j'ai essayé, mais si je mets en gras mon textarea, tout sera en gras et pas seulement le message :-s
 

[n]00bie

L'homme qui post jamais
Me disait bien :p
 

[n]00bie

L'homme qui post jamais
En fait d'apres le tuto swing tu peux pas fair ca avec un JTextArea, faut se servir d'un JTextPane ou JEditorPane

tuto

En gros tu peux changer la font et le style du jtextarea, mais alors l'entierete du jtextarea aura cette font...
 

Jereck

Α & Ω
Staff
En C#, j'avais du override (je vois pas comment le dire en fr ^^) les fonctions Paint (ou Draw, chais plus) pour mettre un élément d'une ListBox en gras.

P-e faiable ainsi en Java aussi.
 

Jereck

Α & Ω
Staff
La surcharge, c'est pas quand une fct a le même nom qu'une existante, mais pas les mêmes arguments ?
 

vitAl

GamerZ2008
Heu... oui tu as raison pardon :shut:.
 

kokotchY

Elite
La surcharge c'est redéfinir une méthode dans une classe fille que la classe mère a déjà.

La surcharge, c'est pas quand une fct a le même nom qu'une existante, mais pas les mêmes arguments ?
Ca c'est du polymorphisme :)
 

Jereck

Α & Ω
Staff
koko a dit:
La surcharge c'est redéfinir une méthode dans une classe fille que la classe mère a déjà.
c'est bien ce que je vx dire par "override".


Ca c'est du polymorphisme :)[/QUOTE]nan, le polymorphisme, c'est quand le branchement se fait vers la classe de base ou la classe dérivée
A::Fct (int, int) ou B::Fct(int, int)

Ce dont je parle (surcharge ?) c'est quand deux fct on la même signature dans la même classe :

int A::Fct(int, int) et int A::Fct(inf, float)

(Excusez ma syntaxe, le C++ et moi, ça fait lgtps, mais c'est plus clair que d'expliquer ça en Java/C#)
 

noLain

www.wearewise.be
utilise un jeditorpane, et formate le contenu en utilisant l'html.

genre:
Code:
<font color="blue">Alain dit:</font> ho mon dieu, derriere toi !
<font color="blue">Alain dit:</font> <b>UN RAT MUTANT</b>
<font color="red">Jc dit:</font> m'en fou, je suis john connor <i>l'invincible</i>.
donne:
Alain dit: ho mon dieu, derriere toi !
Alain dit: UN RAT MUTANT
Jc dit: m'en fou, je suis john connor l'invincible.
 
1er
OP
Angy

Angy

Elite
Arf... j'y arrive toujours pas en essayant les JTextPane ou JEditorPane :dead:

edit: Question bête, on fait cmt pour mettre du html dans java? :/
 

noLain

www.wearewise.be
Code:
String dialogue = "<html><body>";
dialogue += "<b>hello world</b>";
dialogue += "</body></html>";

JEditorPane chatzone = new JEditorPane();
chatzone.setLayout(null);
chatzone.setContentType("text/html");
chatzone.setText( dialogue );
plus d'info ici: [+]
 

kokotchY

Elite
Jereck a dit:
c'est bien ce que je vx dire par "override".


Ca c'est du polymorphisme :)
nan, le polymorphisme, c'est quand le branchement se fait vers la classe de base ou la classe dérivée
A::Fct (int, int) ou B::Fct(int, int)

Ce dont je parle (surcharge ?) c'est quand deux fct on la même signature dans la même classe :

int A::Fct(int, int) et int A::Fct(inf, float)

(Excusez ma syntaxe, le C++ et moi, ça fait lgtps, mais c'est plus clair que d'expliquer ça en Java/C#)[/QUOTE]

C'est marrant car mes défintions sont tout à fait à l'opposé ^^
 
1er
OP
Angy

Angy

Elite
noLain a dit:
Code:
String dialogue = "<html><body>";
dialogue += "<b>hello world</b>";
dialogue += "</body></html>";

JEditorPane chatzone = new JEditorPane();
chatzone.setLayout(null);
chatzone.setContentType("text/html");
chatzone.setText( dialogue );
plus d'info ici: [+]
Parfait! maintenant, je me demande, il n'y a pas une méthode dans le style de .append pour ajouter à la suite dans le JEditorPane, pcq il me remplace tout quand je mets mon nouveau message :/
 

kokotchY

Elite
Code:
chatzone.setText(chatzone.getText()+newText);
De manière simple ;)

Maintenant, il faut voir dans la doc s'il n'existe pas une méthode qui le fait proprement.
¤dit : ca n'existe apparement pas :/
 

noLain

www.wearewise.be
Code:
public void append(String chaine){
   chatzone.setText( chatzone.getText() + chaine );
}
Mais alors il faut retirer la ligne dialogue += "</body:colere:/html>"; plus haut ,
et du coup le doc html n'est plus valide.

edit: grillé :0)
 

kokotchY

Elite
L'idée d'une méthode n'est pas mauvaise pour garder la validitée !

Mais pour bien faire, il faudrait peut-être abstraire encore plus !
Du genre, au lieu d'afficher directement le code html, tu crées un objet qui le gère pour toi, et toi il te suffit d'utiliser les méthodes :
chat.addMessage(nickname,message,time);

Et dans ton objet chat, tu mets à jour la vue du JEditorPane ! En sauvegardant les messages déjà affichés dans une variable.
Comme ca, dans ton objet chat, il te suffit d'afficher le début (<html>...), les messages déjà envoyé (ta variable) et la fin (</body:colere:/html>).

Cela sera beaucoup plus propre ;)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut