Comment paramétrer le keypressed pour ne pas avoir des champs en dur?

Je voudrais enlever parent.champaffichage par un pointeur pour rendre cette fonction générique.

J'ai 4 champs "JTEXTFIELD" à contrôler.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Avant_saisie = parent.champAffichage.getText(); 
 
public class Moteur_keypressedMS implements KeyListener{
 
	CalculatriceMS parent; // une référence à la Calculatrice
	String Avant_saisie;
	boolean fnum = false;
 
	Moteur_keypressedMS(CalculatriceMS parent) {
		this.parent = parent;
	}
 
	public void keyPressed(KeyEvent event) {
		System.out.println("Code touche pressée : " + event.getKeyCode() + " - caractère touche pressée : " + event.getKeyChar());
		// jTextField.getText() contient le texte présent dans le JTextField avant l'appui sur la touche
		// e.getKeyChar() est le caractère correspondant à la touche pressée
				//JOptionPane.showConfirmDialog(null, "quelquechose c produit keyPressed","ici en haut", JOptionPane.PLAIN_MESSAGE);
				char ch = event.getKeyChar();
				if (ch == '0' ||ch == '1'||ch == '2' ||ch == '3' ||ch == '4' ||ch == '5' ||ch == '6' ||ch == '7' ||ch == '8' ||ch == '9' )
				{fnum = true;} else { fnum = false; Avant_saisie = parent.champAffichage.getText(); }
				pause();
	}
 
	public void keyReleased(KeyEvent event) {
		System.out.println("Code touche relâchée : " + event.getKeyCode() + " - caractère touche relâchée : " + event.getKeyChar());         
		//JOptionPane.showConfirmDialog(null, "quelquechose c produit keyReleased","ici en haut", JOptionPane.PLAIN_MESSAGE);
		if (!fnum) {parent.champAffichage.setText(Avant_saisie);}
		pause();                  
	}
 
	public void keyTyped(KeyEvent event) {
		System.out.println("Code touche tapée : " + event.getKeyCode() + " - caractère touche tapée : " + event.getKeyChar());
		//JOptionPane.showConfirmDialog(null, "quelquechose c produit keyTyped","ici en haut", JOptionPane.PLAIN_MESSAGE);
		if (!fnum) { parent.champAffichage.setText(Avant_saisie);}
		pause();
	}
	private void pause(){
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}