69 lines
2.8 KiB
Java
69 lines
2.8 KiB
Java
|
import javax.swing.*;
|
||
|
import java.awt.*;
|
||
|
import java.awt.event.*;
|
||
|
|
||
|
public class Enter extends JPanel {
|
||
|
private static final int GRID_SIZE = 3;
|
||
|
private static final int REGION_SIZE = 3;
|
||
|
private static final int CELL_SIZE = 50;
|
||
|
private int[][] grid;
|
||
|
private int[][] initialGrid; // Pour stocker la grille initiale
|
||
|
private int selectedRow = -1;
|
||
|
private int selectedCol = -1;
|
||
|
|
||
|
public Enter(int[][] grid) {
|
||
|
this.grid = grid;
|
||
|
// Copie de la grille initiale
|
||
|
this.initialGrid = new int[grid.length][grid[0].length];
|
||
|
for (int i = 0; i < grid.length; i++) {
|
||
|
for (int j = 0; j < grid[i].length; j++) {
|
||
|
this.initialGrid[i][j] = grid[i][j];
|
||
|
}
|
||
|
}
|
||
|
setPreferredSize(new Dimension(GRID_SIZE * REGION_SIZE * CELL_SIZE, GRID_SIZE * REGION_SIZE * CELL_SIZE));
|
||
|
setFocusable(true); // Permet au JPanel de recevoir les événements de souris
|
||
|
|
||
|
addMouseListener(new MouseAdapter() {
|
||
|
@Override
|
||
|
public void mouseClicked(MouseEvent e) {
|
||
|
int x = e.getX() / CELL_SIZE;
|
||
|
int y = e.getY() / CELL_SIZE;
|
||
|
if (x >= 0 && x < GRID_SIZE * REGION_SIZE && y >= 0 && y < GRID_SIZE * REGION_SIZE) {
|
||
|
selectedRow = y;
|
||
|
selectedCol = x;
|
||
|
System.out.println("Case sélectionnée : (" + selectedRow + ", " + selectedCol + ")");
|
||
|
if (initialGrid[selectedRow][selectedCol] == 0) { // Ne permet la modification que pour les cellules vides
|
||
|
String valueStr = JOptionPane.showInputDialog(null, "Enter value for the selected cell:");
|
||
|
try {
|
||
|
int value = Integer.parseInt(valueStr);
|
||
|
grid[selectedRow][selectedCol] = value;
|
||
|
repaint();
|
||
|
} catch (NumberFormatException ex) {
|
||
|
JOptionPane.showMessageDialog(null, "Invalid input. Please enter a number.");
|
||
|
}
|
||
|
} else {
|
||
|
JOptionPane.showMessageDialog(null, "You can't edit the default value.");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void paintComponent(Graphics g) {
|
||
|
super.paintComponent(g);
|
||
|
|
||
|
// Dessiner les cases de la grille
|
||
|
for (int i = 0; i < GRID_SIZE * REGION_SIZE; i++) {
|
||
|
for (int j = 0; j < GRID_SIZE * REGION_SIZE; j++) {
|
||
|
g.setColor(Color.BLACK);
|
||
|
g.drawRect(j * CELL_SIZE, i * CELL_SIZE, CELL_SIZE, CELL_SIZE);
|
||
|
int value = grid[i][j];
|
||
|
if (value != 0) {
|
||
|
g.drawString(String.valueOf(value), j * CELL_SIZE + CELL_SIZE / 2, i * CELL_SIZE + CELL_SIZE / 2);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|