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;
|
private int cellValue = 0;
|
||||||
/**
|
/**
|
||||||
* Texte à afficher dans la case
|
* Texte à afficher dans la case
|
||||||
* */
|
*/
|
||||||
private String displayText = "";
|
private String displayText = "";
|
||||||
/**
|
/**
|
||||||
* Bouton pour afficher le texte
|
* Bouton pour afficher le texte
|
||||||
*/
|
*/
|
||||||
private JButton actionButton = new JButton(displayText);
|
private JButton actionButton = new JButton(displayText);
|
||||||
|
/**
|
||||||
|
* Statut de la case
|
||||||
|
*/
|
||||||
|
protected boolean isActive = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur par défaut de GMCase.
|
* Constructeur par défaut de GMCase.
|
||||||
@ -39,8 +43,11 @@ public class GMCase extends JPanel {
|
|||||||
setPreferredSize(new Dimension(60, 60));
|
setPreferredSize(new Dimension(60, 60));
|
||||||
|
|
||||||
// Crée un GMCaseListener et l'ajoute au bouton
|
// Crée un GMCaseListener et l'ajoute au bouton
|
||||||
GMCaseListener listener = new GMCaseListener(this);
|
GMCaseKeyListener listener = new GMCaseKeyListener(this);
|
||||||
actionButton.addKeyListener(listener);
|
actionButton.addKeyListener(listener);
|
||||||
|
|
||||||
|
GMCaseMouseListener mouseListener = new GMCaseMouseListener();
|
||||||
|
actionButton.addMouseListener(mouseListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -69,4 +76,14 @@ public class GMCase extends JPanel {
|
|||||||
public int getCellValue() {
|
public int getCellValue() {
|
||||||
return this.cellValue;
|
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;
|
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
|
* @version 1.0
|
||||||
* @author Moncef STITI
|
* @author Moncef STITI
|
||||||
* @author Marco ORFAO
|
* @author Marco ORFAO
|
||||||
*/
|
*/
|
||||||
public class GMCaseListener implements KeyListener {
|
public class GMCaseKeyListener implements KeyListener {
|
||||||
|
|
||||||
private GMCase gridMakerCase;
|
private GMCase gridMakerCase;
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ public class GMCaseListener implements KeyListener {
|
|||||||
* Constructeur de GridMakerCaseListener.
|
* Constructeur de GridMakerCaseListener.
|
||||||
* @param gridMakerCase La case à écouter.
|
* @param gridMakerCase La case à écouter.
|
||||||
*/
|
*/
|
||||||
public GMCaseListener(GMCase gridMakerCase) {
|
public GMCaseKeyListener(GMCase gridMakerCase) {
|
||||||
this.gridMakerCase = 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();
|
gridCases[i][j] = new GMCase();
|
||||||
zones[zoneRow][zoneCol].add(gridCases[i][j]);
|
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].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