Une petite contribution :

Dans les feuilles de dialogue, j'ai souhaité implémenter le fonctionnement traditionnel, à savoir :

ESCAPE = Annuler, sortir (bouton quitter, annuler, ...)
Entrée = valider (bouton OK, valider, ...)

Voici un exemple de code (d'un débutant dans le genre)...

Hope this helps

Christian

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
 
 
public class sample extends JFrame implements ActionListener{
	private static final long serialVersionUID = 1L;
	private JButton m_bDefaultButton = null;
 
	public sample() {
		super();
 
		setSize(300, 150);
		setLayout(new FlowLayout());
		add(new Button("Bouton exemple"));
		add(new Button("Annuler"));
 
		//mise en place du bouton par défaut
		m_bDefaultButton = new JButton ("Bouton par défaut");
		add( m_bDefaultButton);
		m_bDefaultButton.addActionListener( this); 
 
		this.getRootPane().setDefaultButton( m_bDefaultButton);
		//fin mise en place du bouton par défaut
 
		setLocationRelativeTo(null);
 
		//mise en place du hook sur la touche escape, pour toute la feuille
		ActionListener escListener = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				escapeKeyPressed();//cette méthode sera appelée lors de l'utilisation de la touche escape
			}
		};
		getRootPane().registerKeyboardAction( escListener, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
		// avec cette ligne, on ajoute la possibilité de trapper la touche entrée, équivalente au bouton par défaut
		// bien sure il faudra pouvoir savoir quelle touche a été pressée
		//getRootPane().registerKeyboardAction( escListener, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
		//fin mise en place du hook sur la touche escape, pour toute la feuille
 
		setVisible(true);
 
	}
 
	private void escapeKeyPressed() {
		javax.swing.JOptionPane.showMessageDialog(null, "La touche Echappement à été appuyée !", "Sample", JOptionPane.WARNING_MESSAGE);
	}
 
	public void actionPerformed(ActionEvent e) { 
		if ( e.getSource().equals( m_bDefaultButton)) {
			javax.swing.JOptionPane.showMessageDialog(null, "Le bouton par défaut vient d'être utilisé", "Sample", JOptionPane.WARNING_MESSAGE);			
		}
 
	} 
 
	public static void main(String[] args) {
		new sample();
	}
}