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
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+12 -51
View File
@@ -5,18 +5,17 @@ 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)
* - 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 0.3
* @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 : exécuter Fenetre seule (sans Partie/Dessin) ---
// --- Méthode principale de test ---
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)"));
f.setOnLetterSubmitted(ch ->
JOptionPane.showMessageDialog(null, "Lettre reçue : " + ch + " (sans logique de jeu)")
);
}
}
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.