Ajout d'un MouseListener pour changer le background des cases
This commit is contained in:
parent
a97db16dd2
commit
19bfa89148
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
30
src/GMCaseMouseListener.java
Normal file
30
src/GMCaseMouseListener.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user