-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAffichageChat.java
More file actions
144 lines (103 loc) · 4.37 KB
/
AffichageChat.java
File metadata and controls
144 lines (103 loc) · 4.37 KB
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
import javax.imageio.ImageIO;
import java.io.File;
import javax.swing.*;
import javax.swing.event.MouseInputAdapter;
import java.awt.*;
import java.awt.event.*;
import java.rmi.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/*
* Classe AffichageChat qui est un JPanel
* @author BOULLIER Arthur
* @author GONIN-SAGET Allan
*/
public class AffichageChat extends JPanel{
//largueur de la fenetre
static int largeur = 400;
//hauteur de la fenetre
static int hauteur = 500;
public JTextArea zoneChat;
public JTextField messageAEnvoyer;
public JButton boutonEnvoyer;
public ImageIcon iconeEnvoyer;
public ActionListener actionEnvoyer;
public ActionListener actionReconnecter;
/*
* Constructeur de la classe AffichageChat
* @param j le joueur qui utilise l'interface
*/
AffichageChat(Character j){
Box boiteTotale = new Box(BoxLayout.Y_AXIS);
//gestion de la zone de texte des messages deja envoyés
this.zoneChat = new JTextArea();
this.zoneChat.setEditable(false);
this.zoneChat.setPreferredSize(new Dimension(largeur, hauteur - 100));
this.zoneChat.setBackground(Color.LIGHT_GRAY);
//On ajoute cette zoneChat a la boiteTotale
boiteTotale.add(zoneChat);
Box boiteMessageEtBouton = new Box(BoxLayout.X_AXIS);
//gestion de la zone de texte pour envoyer un message et du bouton d'envoi du message à droite de la zone de texte
this.messageAEnvoyer = new JTextField("Message à envoyer");
this.messageAEnvoyer.setPreferredSize(new Dimension(largeur - 100, hauteur - 400));
this.messageAEnvoyer.addMouseListener(new MouseInputAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent e) {
messageAEnvoyer.setText("");
}
});
//Petit trick pour avoir une image sur un bouton de la bonne taille
this.iconeEnvoyer = new ImageIcon();
try{
Image img = ImageIO.read(new File("./assets/icon_send.png"));
this.iconeEnvoyer.setImage(img.getScaledInstance(100, hauteur - 400, java.awt.Image.SCALE_SMOOTH));
}catch(Exception e){
System.out.println("Erreur");
}
this.actionEnvoyer = new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("test ici ??");
try{
InterfaceChat ServeurMessage = (InterfaceChat) Naming.lookup(InterfaceAdresse.adresseConnexionChat);
ServeurMessage.envoyerMessage(messageAEnvoyer.getText(), j);
messageAEnvoyer.setText("");
}catch (Exception ex){
System.out.println("Erreur d'accès à l'objet distant.");
System.out.println(ex.toString());
}
}
};
this.actionReconnecter = new ActionListener(){
public void actionPerformed(ActionEvent e){
}
};
this.boutonEnvoyer = new JButton(this.iconeEnvoyer);
this.boutonEnvoyer.setPreferredSize(new Dimension(largeur - 300, hauteur - 400));
this.boutonEnvoyer.addActionListener(this.actionEnvoyer);
//On ajoute le messageAEnvoyer et le bouton a la boiteMessageEtBouton
boiteMessageEtBouton.add(messageAEnvoyer);
boiteMessageEtBouton.add(boutonEnvoyer);
//On ajoute la boiteMessageEtBouton a la boiteTotale
boiteTotale.add(boiteMessageEtBouton);
this.add(boiteTotale);
//On lance le thread qui va recevoir les messages
ExecutorService petitThread = Executors.newSingleThreadExecutor();
petitThread.execute(new RecevoirListeMessage(this));
}
/*
* Methode main de test
*/
public static void main(String[] args){
//gestion de la fenetre
JFrame fenetre = new JFrame("Chat");
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setSize(largeur, hauteur);
fenetre.setLocationRelativeTo(null);
fenetre.setResizable(false);
AffichageChat notreChat = new AffichageChat('^');
fenetre.add(notreChat);
fenetre.pack();
//Fenetre visible
fenetre.setVisible(true);
}
}