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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:
//on renvoi un tableau ou tous les messages vont s'enchainer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()+" "; }
return s;
}
et enfin je fais appel a la methode tostring de la classe message
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
puis ca dans la classe sujet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
ca dans la classe forum :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 !!
Partager