forked from menault/TD3_DEV51_Qualite_Algo
Compare commits
2 Commits
ba7e16dc64
...
06daa4e478
| Author | SHA1 | Date | |
|---|---|---|---|
| 06daa4e478 | |||
| 35c9fcd873 |
@@ -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 : 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)")
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user