Fix classe anonyme

This commit is contained in:
2025-10-08 15:33:32 +02:00
parent f7aecb038d
commit 7206dca3ef
2 changed files with 50 additions and 13 deletions

View File

@@ -24,7 +24,7 @@ public class Event implements ActionListener {
wireEvents();
}
/** Branche les listeners sur les composants de Fenetre.*/
/** Branche les listeners sur les composants de Fenetre. */
private void wireEvents() {
JTextField letterInput = window.getLetterInput();
JButton sendButton = window.getSendButton();
@@ -33,18 +33,8 @@ public class Event implements ActionListener {
sendButton.addActionListener(this);
letterInput.addActionListener(this);
// UX : limiter à une seule lettre et forcer la majuscule
letterInput.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent keyEvent) {
char typedChar = keyEvent.getKeyChar();
if (!Character.isLetter(typedChar) || letterInput.getText().length() >= 1) {
keyEvent.consume();
} else {
keyEvent.setKeyChar(Character.toUpperCase(typedChar));
}
}
});
// UX : limiter à une seule lettre et forcer la majuscule (classe dédiée)
letterInput.addKeyListener(new LetterInputFilter(letterInput));
}
/** Réagit à Entrée ou au clic bouton : récupère, valide et transmet la lettre. */

View File

@@ -0,0 +1,47 @@
import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
/**
* La classe <code>LetterInputFilter</code> limite la saisie d'un champ texte
* à une seule lettre de l'alphabet (AZ), en forçant automatiquement
* la majuscule. Toute autre frappe est ignorée.
*
* @version 1.0
* @author Adrien
* Date : 08-10-2025
* Licence :
*/
public class LetterInputFilter extends KeyAdapter {
/** Référence vers le champ de saisie à filtrer. */
private final JTextField letterInput;
//Constructeur.
public LetterInputFilter(JTextField letterInput) {
if (letterInput == null) {
throw new NullPointerException("letterInput ne doit pas être null");
}
this.letterInput = letterInput;
}
/**
* Intercepte les frappes clavier et applique les règles suivantes :
* - n'accepte que les lettres (AZ)
* - limite la saisie à un seul caractère
* - force la majuscule sur le caractère saisi.
*/
@Override
public void keyTyped(KeyEvent keyEvent) {
char typedChar = keyEvent.getKeyChar();
// Refuse tout caractère non alphabétique ou une saisie > 1 caractère.
if (!Character.isLetter(typedChar) || letterInput.getText().length() >= 1) {
keyEvent.consume(); // ignore la frappe
return;
}
// Force la majuscule.
keyEvent.setKeyChar(Character.toUpperCase(typedChar));
}
}