Comment integrer des jlabel avec du texte
Salut a tous,
Je suis en train de faire un forum en java.
J'ai creer une Jlist qui contient les sujets du forum.
Actuellment, lorsque je clique sur un sujet dans ma liste de sujet, un conteneur de type jtextarea affiche le message complet dans un string.
Le fonctionnement en interne est le suivant:
Sur le clic d'un sujet, je recupere l'objet sujet
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting())
return;
JList theList = (JList)e.getSource();
if (theList.isSelectionEmpty()) {
// text_message.se.setIcon(null);
} else {
index = theList.getSelectedIndex();
obj_suj= (Sujet)listeDesSujets.elementAt(index);
String sujet=obj_suj.getSujet();
text_message.setText(f.listerMessages(sujet)); |
J'apelle la methode de ma classe principale f.listerMessages(sujet)
(methode ci dessous)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public String listerMessages(String sujet)
{
Sujet obj_suj;
String lbl_sujet;
String allMessage=new String("");
for (int i=0;i<listeSujets.size();i++)
{
obj_suj=(Sujet)listeSujets.elementAt(i);
lbl_sujet=obj_suj.getSujet();
if (lbl_sujet.equals(sujet))
{
allMessage=obj_suj.listerMessagesInterf(sujet);
}
}
return allMessage;
} |
Dans la methode ci dessus j'apelle la methode lister messages de l'objet sujet:
Code:
1 2 3 4 5 6 7 8 9 10 11
| public String listerMessagesInterf(String sujet)
{
for (int i=0;i<listeMessage.size();i++)
{
Message m=listeMessage.elementAt(i);
s=s+m.toString()+" ";
} |
//on renvoi un tableau ou tous les messages vont s'enchainer
return s;
}
et enfin je fais appel a la methode tostring de la classe message
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public String toString()
{
ligne=ligne;
ligne=ligne+dateMsg;
ligne=ligne+" à "+heure_msg;
ligne=ligne+", écrit par "+login;
ligne=ligne+sep1;
ligne=ligne+"\n => "+contenu_msg;
return ligne;
} |
Bref, beaucoup de chose pour pas grand chose.
Donc pour recapituler, lorsque je clique sur un sujet jobtiens un string qui contient tout le message.
Au lieu d'afficher un long string j'aimerais mettre le tout sous forme de label et surtout pouvoir crrer des liens sur certains elment comme le login.
Par exemple si je clique sur le login ca m'afficherai les infos sur la personne.
Probleme , je sais pas sous quelle forme renvoyer le resultat pour que sur un clic dans la jlist le message soit affiché avec ses reponses.
j'ai essaye ca dans la classe messages :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public JTextPane AffichageMessage()
{
JTextPane jtp=new JTextPane();
jtp.setLayout(new FlowLayout(FlowLayout.CENTER));
JLabel lbl_dateMsg=new JLabel("date");
JLabel lbl_heure_msg=new JLabel("heure_msg");
JLabel lbl_login=new JLabel("login");
JLabel lbl_contenu_msg=new JLabel("contenu_msg");
lbl_login.addMouseListener(this);
jtp.add(lbl_contenu_msg);
jtp.add(lbl_dateMsg);
jtp.add(lbl_heure_msg);
jtp.add(lbl_login);
return jtp;
} |
puis ca dans la classe sujet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public JtextPane listerMessagesInterfa(String sujet)
{
JtextPane mess;
JtextPane jp;
for (int i=0;i<listeMessage.size();i++)
{
Message m=listeMessage.elementAt(i);
jp.setLayout(GridLayout(listeMessage.size()-1,1));
mess=m.AffichageMessage();
jp.add(mess);
}
//on renvoi un tableau ou tous les messages vont s'enchainer
return jp;
} |
ca dans la classe forum :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public JTextPane listerMessagejpanel(String sujet)
{
Sujet obj_suj;
String lbl_sujet;
JTextPane jp=null;
for (int i=0;i<listeSujets.size();i++)
{
obj_suj=(Sujet)listeSujets.elementAt(i);
lbl_sujet=obj_suj.getSujet();
if (lbl_sujet.equals(sujet))
{
jp=obj_suj.listerMessagesInterfa(sujet);
}
}
return jp;
} |
et enfin cela dans la classe dinterface lorsque on clique dans la liste des sujets :
text_message.setText(f.listerMessages(sujet)); //listerMessagejpanel renvoi un JTEXTPANE
Bref , pas moyen de faire ce que je veux !!!
Help me !!