Fenetre fix dessin temp

This commit is contained in:
2025-10-08 14:08:10 +02:00
parent ba7e16dc64
commit 35c9fcd873
8 changed files with 25 additions and 64 deletions

BIN
src/Dessin.class Normal file

Binary file not shown.

BIN
src/Fenetre$1.class Normal file

Binary file not shown.

BIN
src/Fenetre$2.class Normal file

Binary file not shown.

Binary file not shown.

BIN
src/Fenetre.class Normal file

Binary file not shown.

View File

@@ -4,19 +4,18 @@ import java.awt.event.*;
import java.util.function.Consumer;
/**
* La classe <code>Fenetre</code> gère uniquement l'interface graphique :
* - zone de dessin (remplaçable par la classe Dessin)
* - affichage du mot masqué
* - saisie d'une lettre (événement remonté via un handler)
*
* Aucune logique de jeu (choix/vérification du mot) n'est ici.
*
* * @version 0.3
* @author Adrien
* Date : 08-10-25
* Licence :
*/
* La classe <code>Fenetre</code> gère uniquement l'interface graphique :
* - zone de dessin (assurée par la classe Dessin)
* - affichage du mot masqué
* - saisie d'une lettre (événement remonté via un handler)
*
* Aucune logique de jeu (choix/vérification du mot) n'est ici.
*
* @version 1.0
* @author Adrien
* Date : 08-10-25
* Licence :
*/
public class Fenetre {
// --- Composants de l'interface (UI only) ---
@@ -24,18 +23,18 @@ public class Fenetre {
private JLabel wordLabel;
private JTextField letterInput;
private JButton sendButton;
private JPanel drawZone; // remplaçable par la classe Dessin
private JPanel drawZone; // instance de Dessin
// Handler externe pour la lettre soumise (fourni par la classe Partie / contrôleur)
private Consumer<Character> onLetterSubmitted;
// --- Constructeur (courte orchestration uniquement) ---
// --- Constructeur (orchestration courte) ---
public Fenetre() {
setupWindow();
JPanel root = createRoot();
window.setContentPane(root);
drawZone = createDrawZone();
drawZone = createDrawZone(); // -> new Dessin()
root.add(drawZone);
wordLabel = createWordLabel();
@@ -65,12 +64,9 @@ public class Fenetre {
}
// --- Sous-composants UI ---
/** Crée la zone de dessin placeholder (à remplacer par Dessin). */
/** Crée la zone de dessin via la classe Dessin. */
private JPanel createDrawZone() {
JPanel panel = new PlaceholderDrawPanel();
panel.setPreferredSize(new Dimension(600, 350));
panel.setBackground(new Color(245, 245, 245));
return panel;
return new Dessin();
}
/** Crée le label d'affichage du mot (placeholder jusqu'à injection par Partie). */
@@ -113,38 +109,19 @@ public class Fenetre {
return inputPanel;
}
// --- Partie et Dessin ---
// --- Partie <-> UI ---
/** Définit le texte du mot affiché (ex: "_ _ A _ _") fourni par la classe Partie. */
public void setWordDisplay(String maskedWord) {
wordLabel.setText(maskedWord != null ? maskedWord : "");
}
/** Définit le panneau de dessin (remplace le placeholder par la classe Dessin). */
public void setDrawPanel(JPanel dessinPanel) {
if (dessinPanel == null) return;
Container parent = drawZone.getParent();
int index = -1;
for (int i = 0; i < parent.getComponentCount(); i++) {
if (parent.getComponent(i) == drawZone) { index = i; break; }
}
if (index != -1) {
parent.remove(index);
drawZone = dessinPanel;
drawZone.setPreferredSize(new Dimension(600, 350));
parent.add(drawZone, index);
parent.revalidate();
parent.repaint();
}
}
/** Définit le handler appelé quand l'utilisateur soumet une lettre. */
public void setOnLetterSubmitted(Consumer<Character> handler) {
this.onLetterSubmitted = handler;
}
// --- Méthodes privées UI ---
/** Récupère la lettre et notifie le handler externe (aucune logique de jeu ici). */
private void submitLetter() {
String text = letterInput.getText().trim().toUpperCase();
@@ -157,28 +134,12 @@ public class Fenetre {
else JOptionPane.showMessageDialog(window, "Lettre soumise (placeholder) : " + text);
}
// --- Placeholder de dessin (pour tester la fenêtre seule) ---
private static class PlaceholderDrawPanel extends JPanel {
@Override protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(2f));
g2.drawRect(10, 10, getWidth() - 20, getHeight() - 20);
g2.setFont(getFont().deriveFont(Font.BOLD, 16f));
String txt = "Zone de dessin (remplacer par Dessin)";
FontMetrics fm = g2.getFontMetrics();
int x = (getWidth() - fm.stringWidth(txt)) / 2;
int y = (getHeight() + fm.getAscent()) / 2;
g2.drawString(txt, x, y);
}
// --- Méthode principale de test ---
public static void main(String[] args) {
Fenetre f = new Fenetre();
f.setWordDisplay("_ _ _ _ _"); // placeholder
f.setOnLetterSubmitted(ch ->
JOptionPane.showMessageDialog(null, "Lettre reçue : " + ch + " (sans logique de jeu)")
);
}
// --- Méthode principale de test : exécuter Fenetre seule (sans Partie/Dessin) ---
public static void main(String[] args) {
Fenetre f = new Fenetre();
f.setWordDisplay("_ _ _ _ _"); // placeholder
f.setDrawPanel(new Dessin()); // dessin
f.setOnLetterSubmitted(ch -> JOptionPane.showMessageDialog(null,"Lettre reçue : " + ch + " (sans logique de jeu)"));
}
}

BIN
src/Partie.class Normal file

Binary file not shown.

BIN
src/Pendu.class Normal file

Binary file not shown.