-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFenetreCreationMat.java
185 lines (129 loc) · 5.32 KB
/
FenetreCreationMat.java
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
/**
* Classe permettant l'affichage de la simulation
* @author WARIN, CAMPRUBI, BRUSQUE, CHAMPOUILLON
*/
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.util.ArrayList;
public class FenetreCreationMat extends JFrame implements ActionListener {
// Atributs
// Conteneurs
public JPanel conteneurMain;
public JPanel conteneurCouleur;
// Boutons
public JButton boutonCreation;
public JButton boutonChoixCouleur;
// Zone de texte
public JLabel nom;
public JLabel resilience;
public JTextField txtNom;
public JTextField txtRes;
// Autres
JComboBox<String> comboBox;
ArrayList<Materiau> maListeMateriau;
Color couleur;
/**
* Constructeur de la classe affichant la fenetre de création d'un matériau
* @param la fenetre d'affichage principale
*/
public FenetreCreationMat(ArrayList<Materiau> maListeMateriau, JComboBox<String> comboBox) {
// Paramètre de la fenêtre
super("Création Matériau");
setSize(330, 320);
setLocation(500, 200);
this.maListeMateriau = maListeMateriau;
this.comboBox = comboBox;
// Initialisation des conteneurs
// Conteneur principal
conteneurMain = new JPanel();
conteneurMain.setLayout(null);
conteneurMain.setBackground(Color.lightGray);
// Conteneur affichant la couleur choisie
conteneurCouleur = new JPanel();
conteneurCouleur.setLayout(null);
conteneurCouleur.setBackground(Color.blue);
conteneurCouleur.setBounds(230, 150, 40, 40);
conteneurMain.add(conteneurCouleur);
// Initialisation des boutons
// Bouton ouvrant le JChooseColor
boutonChoixCouleur = new JButton("Choisir une couleur");
boutonChoixCouleur.setBounds(5, 150, 150, 40);
boutonChoixCouleur.addActionListener(this);
conteneurMain.add(boutonChoixCouleur);
// Bouton de création du matériau
boutonCreation = new JButton("Créer !");
boutonCreation.setBounds(90, 220, 120, 40);
boutonCreation.addActionListener(this);
conteneurMain.add(boutonCreation);
// Initialisation des zones de textes
// Zone de saisie du nom
nom = new JLabel("Nom : ");
nom.setBounds(5, 10, 120, 30);
conteneurMain.add(nom);
txtNom = new JTextField();
txtNom.setBounds(5, 50, 150, 60);
conteneurMain.add(txtNom);
// Zone de saisie de la résilience
resilience = new JLabel("Résilience : ");
resilience.setBounds(160, 10, 150, 30);
conteneurMain.add(resilience);
txtRes = new JTextField();
txtRes.setBounds(160, 50, 150, 60);
conteneurMain.add(txtRes);
this.add(conteneurMain);
// Affichage de la fenêtre
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == boutonChoixCouleur) {
// Ouverture du JColorChooser permettant de choisir une couleur
couleur = JColorChooser.showDialog(this, "Choisissez une couleur", Color.blue);
conteneurCouleur.setBackground(couleur);
} else {
creationMat();
}
}
/**
* Méthode permettant de créer un matériau dans le fichier BDMat.txt
*/
public void creationMat() {
try {
// La valeur true signifie que le fichier existe déjà
BufferedWriter writer = new BufferedWriter(new FileWriter("BDMat.txt", true));
if(verifValeur()) {
// Ecriture des valeurs dans le fichier texte
writer.write("\r" + txtNom.getText() + "," + txtRes.getText() + "," + couleur.getRed()
+ "," + couleur.getGreen() + "," + couleur.getBlue() + "," + couleur.getAlpha());
maListeMateriau.add(new Materiau(txtNom.getText(), Double.parseDouble(txtRes.getText()), couleur));
comboBox.addItem(txtNom.getText());
JOptionPane.showMessageDialog(this, "Le matériau a bien été créé !", "Opération réussie !", 2);
this.dispose(); // Fermeture de la fenêtre
}
writer.close(); // Fin de l'écriture
} catch (Exception ex) { // Obligatoire pour le BufferedWriter
JOptionPane.showMessageDialog(this, "Erreur dans l'écriture du fichier BDMat.txt",
"Erreur écriture fichier", 0);
}
}
/**
* Méthode permettant de vérifier que les valeurs saisies sont correctes
* @return Si les valeurs sont correctes ou non
*/
public boolean verifValeur() {
try {
if(Double.parseDouble(txtRes.getText()) < 0) {
JOptionPane.showMessageDialog(this, "Veuillez rentrez une valeur de résilience supérieure ou égal à 0",
"Erreur saisie résilience", 0);
return(false);
} else {
return(true);
}
} catch(Exception ex) { // Si la valeur saisie n'est pas un double
JOptionPane.showMessageDialog(this, "La valeur de résilience doit être un flottant d'une valeur supérieure ou égale à 0",
"Erreur saisie résilience", 0);
return(false);
}
}
}