Ajout d'un MouseListener pour changer le background des cases

This commit is contained in:
stiti 2024-04-30 12:01:34 +02:00
parent a97db16dd2
commit 19bfa89148
4 changed files with 53 additions and 5 deletions

View File

@ -15,12 +15,16 @@ public class GMCase extends JPanel {
private int cellValue = 0;
/**
* Texte à afficher dans la case
* */
*/
private String displayText = "";
/**
* Bouton pour afficher le texte
*/
private JButton actionButton = new JButton(displayText);
/**
* Statut de la case
*/
protected boolean isActive = false;
/**
* Constructeur par défaut de GMCase.
@ -39,8 +43,11 @@ public class GMCase extends JPanel {
setPreferredSize(new Dimension(60, 60));
// Crée un GMCaseListener et l'ajoute au bouton
GMCaseListener listener = new GMCaseListener(this);
GMCaseKeyListener listener = new GMCaseKeyListener(this);
actionButton.addKeyListener(listener);
GMCaseMouseListener mouseListener = new GMCaseMouseListener();
actionButton.addMouseListener(mouseListener);
}
/**
@ -69,4 +76,14 @@ public class GMCase extends JPanel {
public int getCellValue() {
return this.cellValue;
}
public void setActive(boolean active) {
this.isActive = active;
if (isActive) {
setBackground(Color.CYAN);
} else {
setBackground(Color.WHITE);
}
updateDisplay();
}
}

View File

@ -2,12 +2,12 @@ import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
/**
* GridMakerCaseListener est un KeyListener utilisé pour écouter les événements de touche dans GridMakerCase.
* GMCaseKeyListener est un KeyListener utilisé pour écouter les événements de touche dans GridMakerCase.
* @version 1.0
* @author Moncef STITI
* @author Marco ORFAO
*/
public class GMCaseListener implements KeyListener {
public class GMCaseKeyListener implements KeyListener {
private GMCase gridMakerCase;
@ -15,7 +15,7 @@ public class GMCaseListener implements KeyListener {
* Constructeur de GridMakerCaseListener.
* @param gridMakerCase La case à écouter.
*/
public GMCaseListener(GMCase gridMakerCase) {
public GMCaseKeyListener(GMCase gridMakerCase) {
this.gridMakerCase = gridMakerCase;
}

View File

@ -0,0 +1,30 @@
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.*;
import javax.swing.*;
public class GMCaseMouseListener extends MouseAdapter {
// Variable statique pour stocker la dernière case activée
private static GMCase lastActiveCase;
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
// Vérifie si la source de l'événement est un JButton
if (e.getSource() instanceof JButton) {
JButton button = (JButton) e.getSource();
// Vérifie si le bouton est contenu dans une instance de GMCase
if (button.getParent() instanceof GMCase) {
GMCase gmCase = (GMCase) button.getParent();
// Si la dernière case activée est différente de la case actuelle
if (lastActiveCase != null && lastActiveCase != gmCase) {
lastActiveCase.setActive(false); // Désactiver la dernière case activée
}
// Activer la case actuelle
gmCase.setActive(true);
// Mettre à jour la référence de la dernière case activée
lastActiveCase = gmCase;
}
}
}
}

View File

@ -54,6 +54,7 @@ public class GMGrid extends JPanel {
gridCases[i][j] = new GMCase();
zones[zoneRow][zoneCol].add(gridCases[i][j]);
gridCases[i][j].setBorder(determineBorder(i, j)); // Utilisation de la fonction pour définir les bordures
gridCases[i][j].setBackground(Color.WHITE);
}
}
}