1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
| import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.net.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.tree.*;
import javax.swing.event.*;
public class fenetre extends JApplet {
JOptionPane jop;
JPanel p1;
JPanel p2;
JPanel pan_boutton;
static JPanel pan_user;
JPanel pan_final;
JButton envoyer, quitter;
JTextArea envoie;
static JTextArea affichage;
BorderLayout l1;
GridLayout l2;
BorderLayout l3;
BorderLayout l4;
JScrollPane scroll;
JScrollPane scroll2;
static JTree user_tree;
static DefaultMutableTreeNode racine;
static JTabbedPane onglet;
static Socket client;
public void init() {
//ARBRE
racine = new DefaultMutableTreeNode("users"); ///on fait la racine de notre arbre
user_tree = new JTree(racine);
user_tree.addTreeSelectionListener(new TreeSelectionListener() { //classe anonyme
public void valueChanged(TreeSelectionEvent event) {
if(user_tree.getLastSelectedPathComponent() != null){
String pseudo = user_tree.getLastSelectedPathComponent().toString();
onglet_update(pseudo);
System.out.println(pseudo);
}
}});
//AFFICHAGE
affichage = new JTextArea("Bienvenu sur le chat");
affichage.setRows(20);
affichage.setColumns(30);
affichage.setEditable(false);
affichage.setLineWrap(true);
scroll = new JScrollPane(affichage);
scroll.setVerticalScrollBarPolicy(scroll.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll.setHorizontalScrollBarPolicy(scroll.HORIZONTAL_SCROLLBAR_NEVER);
//PANNEAU 1
p1 = new JPanel();
l1 = new BorderLayout();
p1.setLayout(l1);
p1.add(scroll, l1.NORTH); //on prepare le panneau et on met la fenetre d'affichage au nord
//PANNEAU BOUTTON
pan_boutton = new JPanel();
envoyer = new JButton("Envoyer");
envoyer.addActionListener(new envoyer());
quitter = new JButton("Quitter");
l2 = new GridLayout(1, 2);
pan_boutton.setLayout(l2);
pan_boutton.add(envoyer);
pan_boutton.add(quitter);
//PANNEAU BOUTTON + ENVOIE
p2 = new JPanel();
l3 = new BorderLayout();
p2.setLayout(l3);
envoie = new JTextArea();
envoie.setRows(3);
envoie.setLineWrap(true);
scroll2 = new JScrollPane(envoie);
scroll2.setVerticalScrollBarPolicy(scroll2.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll2.setHorizontalScrollBarPolicy(scroll2.HORIZONTAL_SCROLLBAR_NEVER);
p2.add(scroll2, l3.NORTH); //au nord la zone de saisie
p2.add(pan_boutton, l3.SOUTH); //on rajoute ici les boutton
p1.add(p2, l1.SOUTH); //on ajoute le tableau au sud
//USER
pan_user = new JPanel();
//PANNEAU FINAL
l4 = new BorderLayout();
pan_final = new JPanel();
pan_final.setLayout(l4);
pan_final.add(p1, l4.WEST);
pan_final.add(pan_user, l4.EAST); //on rajoute le panneau user et le panneau standar a la fenetre
onglet = new JTabbedPane();
onglet.add(pan_final, "principal");
this.setContentPane(onglet);
this.setSize(500, 400);
//on recupere le pseudo de la personne
String pseudo = jop.showInputDialog(null, "Votre pseudo: ", "chat_okami", JOptionPane.QUESTION_MESSAGE);
Thread t = new Thread(new thread_connection(pseudo));
t.start(); //on etablit la connection
}
public static void reception(String message) { //methode de reception
try {
String ancien = affichage.getText();
message = ancien + "\n" + message;
affichage.setText(message);
}catch(Exception e) { e.printStackTrace(); }
}
public void user_update(Vector users) {
racine.removeAllChildren();//on enleve tout ce qu'il y avai
for(int i = 0 ; i < users.size() ; i++) { //on parcourt le tableau
DefaultMutableTreeNode rep = new DefaultMutableTreeNode(users.elementAt(i));
racine.add(rep); //a chaqe foi on rajoute a la racine
}
user_tree = new JTree(racine);
user_tree.repaint();
pan_user.removeAll(); //on oublie pas d'enlever les anciens arbres
pan_user.add(user_tree);
pan_user.revalidate();
user_tree.revalidate();
}
public void onglet_update(String pseudo) {
onglet.add(new JPanel(), pseudo);
}
public class envoyer implements ActionListener { // le listener pour l'envoie
public void actionPerformed(ActionEvent e) {
try {
String message = envoie.getText();
envoie.setText("");
if(message != null) {
Thread t = new Thread(new thread_envoie(client, message));
t.start();
}
}catch(Exception er) {er.printStackTrace(); }
}
}//fin class envoyer
} //fin classe principale |
Partager