début documentation

This commit is contained in:
Haïssous Kayyissa 2022-05-25 10:42:04 +02:00
parent 81b6d2f709
commit d97e1c8f5c
14 changed files with 280 additions and 56 deletions

View File

@ -1,12 +1,37 @@
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
/**
* La classe <code>Banniere</code> affiche l'état de la partie,
* gère la sauvegarde la victoire et la défaite
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Banniere extends JPanel { public class Banniere extends JPanel {
/**
* fenetre de Jeu
*/
private FrameJeu fenetre; private FrameJeu fenetre;
/**
* fenetre du menu lié
*/
private FrameMenu menu; private FrameMenu menu;
/**
* Bouton qui permet de sauver et quitter
*/
private JButton save; private JButton save;
/**
* le JLabel qui affiche le nombre de mines restantes
*/
private JLabel mines; private JLabel mines;
// Définition du constructeur
/**
* Constructeur qui sert à la création de la bannière et l'ajout du bouton sauver et quitter
* @param mines le nombre de mines dans la partie
* @param fenetre la fenêtre de jeu
* @param menu la fenêtre de menu rattachée
* @param grille la grille de jeu
*/
public Banniere(int mines, FrameJeu fenetre, FrameMenu menu, Grille grille) { public Banniere(int mines, FrameJeu fenetre, FrameMenu menu, Grille grille) {
super(); super();
this.fenetre=fenetre; this.fenetre=fenetre;
@ -18,7 +43,6 @@ public class Banniere extends JPanel {
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
// Compteur de mines restantes // Compteur de mines restantes
this.mines= new JLabel(); this.mines= new JLabel();
this.add(this.mines, BorderLayout.NORTH); this.add(this.mines, BorderLayout.NORTH);
@ -28,13 +52,18 @@ public class Banniere extends JPanel {
this.add(this.save, BorderLayout.EAST); this.add(this.save, BorderLayout.EAST);
} }
// Méthode pour afficher le nombre de mines restantes /**
* Méthode pour afficher le nombre de mines restantes
* @param minesLeft le nombre de mines restantes
*/
public void setMinesLeft(int minesLeft) { public void setMinesLeft(int minesLeft) {
this.mines.setText("Mines restantes : "+Integer.toString(minesLeft)); this.mines.setText("Mines restantes : "+Integer.toString(minesLeft));
this.repaint(); this.repaint();
} }
// Méthode pour indiquer au joueur sa Victoire /**
* Méthode pour indiquer au joueur sa Victoire
*/
public void setVictoire() { public void setVictoire() {
remove(this.save); remove(this.save);
JLabel victoire = new JLabel("Victoire ! Retour au menu..."); JLabel victoire = new JLabel("Victoire ! Retour au menu...");
@ -46,7 +75,9 @@ public class Banniere extends JPanel {
timerMenu.start(); timerMenu.start();
} }
// Méthode pour indiquer au joueur sa Défaite /**
* Méthode pour indiquer au joueur sa Défaite
*/
public void setDefaite() { public void setDefaite() {
remove(this.save); remove(this.save);
JLabel defaite = new JLabel("Défaite ! Retour au menu..."); JLabel defaite = new JLabel("Défaite ! Retour au menu...");

View File

@ -29,7 +29,6 @@ public class Case extends JPanel {
// Méthode qui permet de montrer la case, et fait perdre si elle est minée // Méthode qui permet de montrer la case, et fait perdre si elle est minée
public void setVisible(){ public void setVisible(){
// On vérfie que la case n'est pas déjà visible // On vérfie que la case n'est pas déjà visible
if (!this.visible){ if (!this.visible){
this.visible = true; this.visible = true;

View File

@ -1,10 +1,29 @@
import java.awt.event.*; import java.awt.event.*;
/**
* La classe <code>Chargement</code> implémente l'interface ActionListener
* elle permet de lancer le chargement d'une partie sauvegardée
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Chargement implements ActionListener { public class Chargement implements ActionListener {
/**
* Fenetre du menu.
*/
private FrameMenu menu; private FrameMenu menu;
/**
* Constructeur qui ne sert qu'à la création de la constante menu
* @param menu la fenêtre de menu
*/
public Chargement(FrameMenu menu){ public Chargement(FrameMenu menu){
this.menu=menu; this.menu=menu;
} }
/**
* Méthode qui doit être rédigée
* @param e l'évenement sur le bouton
*/
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
this.menu.setVisible(false); this.menu.setVisible(false);

View File

@ -1,10 +1,25 @@
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
// Cette classe à pour but d'afficher un menu et de réagir aux directives de l'utilisateur (lancer le jeu, le quitter...) /**
* La classe <code>FrameJeu</code> génère une grille de jeu
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class FrameJeu extends JFrame{ public class FrameJeu extends JFrame{
/**
* grille de jeu
*/
private Grille grille; private Grille grille;
/**
* Constructeur qui sert à géréner une nouvelle grille
* @param lignes le nombre de lignes
* @param colonnes le nombre de colonnes
* @param mines le nombre de mines
* @param menu la fenêtre du menu rattaché à la partie
*/
public FrameJeu(int lignes, int colonnes, int mines, FrameMenu menu) { public FrameJeu(int lignes, int colonnes, int mines, FrameMenu menu) {
super(); super();
// Création d'une grille pour une nouvelle partie // Création d'une grille pour une nouvelle partie
@ -13,13 +28,24 @@ public class FrameJeu extends JFrame{
} }
// Génération d'une grille à partir de la sauvegarde /**
* Constructeur qui sert à charger la grille d'une ancienne partie
* @param lignes le nombre de lignes
* @param colonnes le nombre de colonnes
* @param donnees la sauvegarde
* @param mines le nombre de mines
* @param menu la fenêtre du menu rattaché à la partie
*/
public FrameJeu (int lignes, int colonnes, SaveManager.SaveData donnees, int mines, FrameMenu menu){ public FrameJeu (int lignes, int colonnes, SaveManager.SaveData donnees, int mines, FrameMenu menu){
super(); super();
// Génération d'une grille à partir de la sauvegarde
this.grille=new Grille(lignes,colonnes,donnees,mines,this, menu); this.grille=new Grille(lignes,colonnes,donnees,mines,this, menu);
MiseEnPage(); MiseEnPage();
} }
/**
* Méthode qui sert à créer la fenêtre avec ses élements
*/
public void MiseEnPage(){ public void MiseEnPage(){
// On récupère les dimensions de l'écran pour adapter la taille par défaut de notre fenêtre // On récupère les dimensions de l'écran pour adapter la taille par défaut de notre fenêtre

View File

@ -2,20 +2,57 @@ import javax.swing.*;
import java.awt.event.*; import java.awt.event.*;
import java.io.File; import java.io.File;
import java.awt.*; import java.awt.*;
/**
// Cette classe à pour but d'afficher un menu et de réagir aux directives de l'utilisateur (lancer le jeu, le quitter...) * La classe <code>FrameMenu</code> correspond à une fenêtre de menu,
* elle l'affiche et régit aux directives de l'utilisateur (Jouer, Charger, Quitter)
* @version 1.1
* @author Kayyissa Haïssous
*/
public class FrameMenu extends JFrame{ public class FrameMenu extends JFrame{
/**
* Nombre de lignes pour la partie à lancer
*/
private int lignes; private int lignes;
/**
* Nombre de colonnes pour la partie à lancer
*/
private int colonnes; private int colonnes;
/**
* Nombre de mines pour la partie à lancer
*/
private int mines; private int mines;
/**
* JSlider qui permet de choisir le nombre de lignes
*/
private JSlider sliderLignes; private JSlider sliderLignes;
/**
* JSlider qui permet de choisir le nombre de colonnes
*/
private JSlider sliderColonnes; private JSlider sliderColonnes;
/**
* JSlider qui permet de choisir le nombre de mines
*/
private JSlider sliderMines; private JSlider sliderMines;
/**
* JLabel qui permet d'afficher en temps réel le nombre de lignes
*/
private JLabel showLines; private JLabel showLines;
/**
* JLabel qui permet d'afficher en temps réel le nombre de colonnes
*/
private JLabel showColumns; private JLabel showColumns;
/**
* JLabel qui permet d'afficher en temps réel le nombre de mines
*/
private JLabel showMines; private JLabel showMines;
/**
* JButton pour charger une éventuelle sauvegarde
*/
private JButton charger; private JButton charger;
/**
* Constructeur destiné à la création et l'affichage de la fenêtre de menu
*/
public FrameMenu() { public FrameMenu() {
super(); super();
@ -37,7 +74,7 @@ public class FrameMenu extends JFrame{
titre.setBounds((frameSize.width/3), frameSize.height/15,frameSize.width/2,frameSize.height*2/15); titre.setBounds((frameSize.width/3), frameSize.height/15,frameSize.width/2,frameSize.height*2/15);
this.add(titre); this.add(titre);
// On créer les sliders et les JLabel qui afficheront leur valeur // On créer les Jsliders et les JLabel qui afficheront leur valeur
this.sliderLignes = new JSlider(4,30,20); this.sliderLignes = new JSlider(4,30,20);
this.sliderColonnes = new JSlider(4,30,25); this.sliderColonnes = new JSlider(4,30,25);
this.sliderMines = new JSlider(1,900, 50); this.sliderMines = new JSlider(1,900, 50);
@ -70,6 +107,7 @@ public class FrameMenu extends JFrame{
this.add(showColumns); this.add(showColumns);
this.add(showMines); this.add(showMines);
// On créer les boutons Jouer, quitter et si une save existe, charger
JButton newGame = new JButton("Jouer"); JButton newGame = new JButton("Jouer");
newGame.addActionListener(new NewGameListener(this)); newGame.addActionListener(new NewGameListener(this));
@ -98,7 +136,11 @@ public class FrameMenu extends JFrame{
this.setVisible(true); this.setVisible(true);
} }
// Méthode pour récupérer les valeurs des paramètres et les afficher à l'écran /**
* Méthode pour récupérer les valeurs des paramètres et les afficher à l'écran
* @param settingToSet Le paramètre qui doit être changé
* @param settingValue La nouvelle valeur à donner au paramètre
*/
public void setSettings(int settingToSet, int settingValue) { public void setSettings(int settingToSet, int settingValue) {
if (settingToSet==0){ if (settingToSet==0){
this.lignes=settingValue; this.lignes=settingValue;
@ -113,7 +155,10 @@ public class FrameMenu extends JFrame{
this.sliderMines.setMaximum(this.colonnes*this.lignes); this.sliderMines.setMaximum(this.colonnes*this.lignes);
} }
// Methode pour connaître les paramètres de la partie /**
* Renvoie les valeurs des paramètres
* @return les paramètres pour une nouvelle partie
*/
public int[] getSettings() { public int[] getSettings() {
int[] settings = new int[3]; int[] settings = new int[3];
settings[0]=this.lignes; settings[0]=this.lignes;
@ -122,7 +167,9 @@ public class FrameMenu extends JFrame{
return settings; return settings;
} }
// Methode pour supprimer le bouton charger après un chargement /**
* Méthode pour supprimer le bouton charger après avoir chargé une partie
*/
public void deleteCharger() { public void deleteCharger() {
this.remove(this.charger); this.remove(this.charger);
} }

View File

@ -15,8 +15,6 @@ public class Grille extends JPanel{
private boolean enJeu; private boolean enJeu;
private FrameJeu fenetre; private FrameJeu fenetre;
// TODO : Recréer un tableau avec les cases minees
// Définition du constructeur qui correspond à une nouvelle grille de jeu // Définition du constructeur qui correspond à une nouvelle grille de jeu
public Grille(int lignes, int colonnes, int mines, FrameJeu fenetre, FrameMenu menu){ public Grille(int lignes, int colonnes, int mines, FrameJeu fenetre, FrameMenu menu){
super(); super();
@ -85,7 +83,6 @@ public class Grille extends JPanel{
this.lignes=lignes; this.lignes=lignes;
this.taille=lignes*colonnes; this.taille=lignes*colonnes;
this.minesLeft=mines; this.minesLeft=mines;
this.mines=mines;
this.enJeu=true; this.enJeu=true;
this.fenetre=fenetre; this.fenetre=fenetre;
@ -102,34 +99,39 @@ public class Grille extends JPanel{
// On initialise un plateau de cases // On initialise un plateau de cases
GenererPlateau(caseSize); GenererPlateau(caseSize);
// On créer un tableau pour y placer les cases minées
// On prépare un tableau pour y placer les cases minées
int[] caseMine = new int[mines]; int[] caseMine = new int[mines];
// On lit maintenant les données pour fixer certains de leurs attributs
int j=0; int j=0;
// On lit maintenant les données pour fixer certains attributs et savoir sont les mines
for (int i=0;i<=taille-1;i++){ for (int i=0;i<=taille-1;i++){
System.out.println(donnees.cases.substring(i,i+1)); System.out.println(donnees.cases.substring(i,i+1));
if (Integer.parseInt(donnees.cases.substring(i,i+1))==1){ if (Integer.parseInt(donnees.cases.substring(i,i+1))==1){
plateau[i].setMine(); plateau[i].setMine();
caseMine[j]=i; caseMine[j]=i;
System.out.println(caseMine[j]);
j++; j++;
} else if (Integer.parseInt(donnees.cases.substring(i,i+1))==2){ } else if (Integer.parseInt(donnees.cases.substring(i,i+1))==2){
plateau[i].setReperee(true); plateau[i].setReperee(true);
} else if (Integer.parseInt(donnees.cases.substring(i,i+1))==3){ } else if (Integer.parseInt(donnees.cases.substring(i,i+1))==3){
plateau[i].setMine(); plateau[i].setMine();
caseMine[j]=i;
System.out.println(caseMine[j]);
j++;
plateau[i].setReperee(true); plateau[i].setReperee(true);
} else if (Integer.parseInt(donnees.cases.substring(i,i+1))==4){
plateau[i].setVisible();
} }
} }
// On détermine l'entourage de chaque case // On détermine l'entourage de chaque case
SetEntourage(caseMine); SetEntourage(caseMine);
// On affiche les cases qui doivent être visibles
for (int n=0;n<=taille-1;n++){
if (Integer.parseInt(donnees.cases.substring(n,n+1))==4){
plateau[n].setVisible();
}
}
// On affiche la grille // On affiche la grille
AfficherPlateau(); AfficherPlateau();
} }
@ -138,18 +140,6 @@ public class Grille extends JPanel{
// Méthode pour Génerer le plateau // Méthode pour Génerer le plateau
protected void GenererPlateau(Dimension caseSize){ protected void GenererPlateau(Dimension caseSize){
this.plateau= new Case[this.taille]; this.plateau= new Case[this.taille];
@ -236,6 +226,7 @@ public class Grille extends JPanel{
} }
} }
plateau[i].setEntourage(entourage); plateau[i].setEntourage(entourage);
System.out.println(entourage);
} }
} }

View File

@ -1,4 +1,12 @@
/**
* La classe <code>Main</code> est le main qui débute le programme du démineur
* @version 1.1
* @author Kayyissa Haïssous
*/
public class Main{ public class Main{
/**
* main ouvrant la fenêtre de menu
*/
public static void main(String[] args) { public static void main(String[] args) {
new FrameMenu(); new FrameMenu();
} }

View File

@ -11,7 +11,7 @@ JVMFLAGS =
Main.class : Main.java FrameMenu.class Main.class : Main.java FrameMenu.class
${JC} ${JCFLAGS} Main.java ${JC} ${JCFLAGS} Main.java
FrameMenu.class : FrameMenu.java SettingsListener.class NewGameListener.class FrameMenu.class : FrameMenu.java SettingsListener.class NewGameListener.class Chargement.class
${JC} ${JCFLAGS} FrameMenu.java ${JC} ${JCFLAGS} FrameMenu.java
SettingsListener.class : SettingsListener.java SettingsListener.class : SettingsListener.java
@ -20,31 +20,40 @@ SettingsListener.class : SettingsListener.java
NewGameListener.class : NewGameListener.java FrameJeu.class NewGameListener.class : NewGameListener.java FrameJeu.class
${JC} ${JCFLAGS} NewGameListener.java ${JC} ${JCFLAGS} NewGameListener.java
Chargement.class : Chargement.java FrameJeu.class
${JC} ${JCFLAGS} Chargement.java
FrameJeu.class : FrameJeu.java Grille.class FrameJeu.class : FrameJeu.java Grille.class
${JC} ${JCFLAGS} FrameJeu.java ${JC} ${JCFLAGS} FrameJeu.java
Grille.class : Grille.java Banniere.class Case.class .Grille.class : Grille.java Banniere.class Case.class
${JC} ${JCFLAGS} Grille.java ${JC} ${JCFLAGS} Grille.java
Banniere.class : Banniere.java MenuListener.class Banniere.class : Banniere.java MenuListener.class SaveListener.class
${JC} ${JCFLAGS} Banniere.java ${JC} ${JCFLAGS} Banniere.java
Case.class : Case.java ListenerCase.class Entourage.class .Case.class : Case.java ListenerCase.class Entourage.class
${JC} ${JCFLAGS} Case.java ${JC} ${JCFLAGS} Case.java
MenuListener.class : MenuListener.java MenuListener.class : MenuListener.java
${JC} ${JCFLAGS} MenuListener.java ${JC} ${JCFLAGS} MenuListener.java
ListenerCase.class : ListenerCase.java Etoile.class Doute.class SaveListener.class : SaveListener.java SaveManager.class
${JC} ${JCFLAGS} SaveListener.java
SaveManager.class : SaveManager.java
${JC} ${JCFLAGS} SaveManager.java
.ListenerCase.class : ListenerCase.java Etoile.class Doute.class
${JC} ${JCFLAGS} ListenerCase.java ${JC} ${JCFLAGS} ListenerCase.java
Entourage.class : Entourage.java .Entourage.class : Entourage.java
${JC} ${JCFLAGS} Entourage.java ${JC} ${JCFLAGS} Entourage.java
Etoile.class : Etoile.java .Etoile.class : Etoile.java
${JC} ${JCFLAGS} Etoile.java ${JC} ${JCFLAGS} Etoile.java
Doute.class : Doute.java .Doute.class : Doute.java
${JC} ${JCFLAGS} Doute.java ${JC} ${JCFLAGS} Doute.java

View File

@ -1,12 +1,35 @@
import java.awt.event.*; import java.awt.event.*;
/**
* La classe <code>MenuListener</code> implémente l'interface ActionListener
* ferme le jeu et réouvre la fenêtre de menu
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class MenuListener implements ActionListener{ public class MenuListener implements ActionListener{
/**
* fenetre de Jeu
*/
private FrameJeu fenetre; private FrameJeu fenetre;
/**
* fenetre de Menu
*/
private FrameMenu menu; private FrameMenu menu;
/**
* Constructeur qui ne sert qu'à la création de constantes
* @param fenetre la fenêtre de jeu
* @param menu la fenêtre de menu
*/
public MenuListener(FrameJeu fenetre, FrameMenu menu){ public MenuListener(FrameJeu fenetre, FrameMenu menu){
this.fenetre=fenetre; this.fenetre=fenetre;
this.menu=menu; this.menu=menu;
} }
/**
* Méthode qui doit être rédigée
* @param event l'évenement
*/
@Override @Override
public void actionPerformed(ActionEvent event){ public void actionPerformed(ActionEvent event){
this.menu.setVisible(true); this.menu.setVisible(true);

View File

@ -1,10 +1,29 @@
import java.awt.event.*; import java.awt.event.*;
/**
* La classe <code>NewGameListener</code> implémente l'interface ActionListener
* et permet de lancer une nouvelle partie.
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class NewGameListener implements ActionListener{ public class NewGameListener implements ActionListener{
/**
* Fenetre du menu.
*/
private FrameMenu menu; private FrameMenu menu;
/**
* Constructeur qui ne sert qu'à la création de la constante menu
* @param menu la fenêtre de menu
*/
public NewGameListener(FrameMenu menu){ public NewGameListener(FrameMenu menu){
this.menu=menu; this.menu=menu;
} }
/**
* Méthode qui doit être rédigée
* @param event l'évenement sur le bouton
*/
@Override @Override
public void actionPerformed(ActionEvent event){ public void actionPerformed(ActionEvent event){
int[] settings =this.menu.getSettings(); int[] settings =this.menu.getSettings();

View File

@ -1,2 +1,2 @@
25x20x50 11x8x0
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 4444444444444444444444444444444304444444310044444444000444444441004444444410044444444000

View File

@ -1,12 +1,35 @@
import java.awt.event.*; import java.awt.event.*;
/**
* La classe <code>MenuListener</code> implémente l'interface ActionListener
* ferme le jeu et sauvegarde la partie en cours dans le fichier Save.txt
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class SaveListener implements ActionListener { public class SaveListener implements ActionListener {
/**
* Grille de Jeu
*/
private Grille grille; private Grille grille;
/**
* fenetre de Jeu
*/
private FrameJeu fenetre; private FrameJeu fenetre;
/**
* Constructeur qui ne sert qu'à la création de constantes
* @param grille la grille de Jeu
* @param fenetre la fenêtre de jeu
*/
public SaveListener(Grille grille, FrameJeu fenetre){ public SaveListener(Grille grille, FrameJeu fenetre){
this.grille=grille; this.grille=grille;
this.fenetre=fenetre; this.fenetre=fenetre;
} }
/**
* Méthode qui doit être rédigée
* @param event l'évenement sur le Bouton
*/
@Override @Override
public void actionPerformed(ActionEvent event){ public void actionPerformed(ActionEvent event){
SaveManager saveManager = new SaveManager(); SaveManager saveManager = new SaveManager();

View File

@ -1,8 +1,19 @@
import java.awt.Dimension; import java.awt.Dimension;
import java.io.*; import java.io.*;
/**
* La classe <code>SaveManager</code> sert à sauvegarder la partie en cours
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class SaveManager { public class SaveManager {
/**
* Méthode pour récupérer les infos et les écrires dans le fichier voulu
* @param grille la grille de jeu
* @param nomFichier le nom du fichier de sauvegarde
*/
public void save(Grille grille, String nomFichier) { public void save(Grille grille, String nomFichier) {
Dimension taille = grille.getDimensionGrille(); Dimension taille = grille.getDimensionGrille();
@ -23,6 +34,10 @@ public class SaveManager {
} }
} }
/**
* Méthode qui charge les infos de sauvegarde
* @param nomFicher le nom du fichier de save
*/
public SaveData load(String nomFichier) { public SaveData load(String nomFichier) {
String toReturn=""; String toReturn="";
String ligne; String ligne;
@ -61,6 +76,9 @@ public class SaveManager {
return toRet; return toRet;
} }
/**
* La classe <code>SaveDate</code> correspond aux données de sauvegarde d'une partie
*/
public class SaveData{ public class SaveData{
public Dimension taille; public Dimension taille;
public String cases; public String cases;

View File

@ -2,6 +2,13 @@ import javax.swing.JSlider;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
/**
* La classe <code>SettingsListener</code> implémente l'interface ChangeListener
* et permet de connaître la valeur des paramètres
*
* @version 1.1
* @author Kayyissa Haïssous
*/
public class SettingsListener implements ChangeListener{ public class SettingsListener implements ChangeListener{
private int settingToSet; private int settingToSet;
private int settingValue; private int settingValue;
@ -11,6 +18,10 @@ public class SettingsListener implements ChangeListener{
this.menu=menu; this.menu=menu;
} }
/**
* Méthode qui doit être rédigée
* @param evenement l'évenement sur le JSlider
*/
@Override @Override
public void stateChanged(ChangeEvent evenement) { public void stateChanged(ChangeEvent evenement) {
JSlider slider = (JSlider) evenement.getSource(); JSlider slider = (JSlider) evenement.getSource();