Objectif : Application simple Java utilisant les événements de souris et de clavier sur un objet de classe JButton.
- Même exemple, code source en Delphi
L'intérêt de cet exemple est de montrer la forte ressemblance des boutons Swing avec les boutons Delphi. Nous n'avons pas examiné les dissemblances qui se déduisent par différence.La fenêtre comporte un bouton (JButton jButton1), une étiquette (JLabel jLabel1), une case à cocher
(JCheckBox jCheckBox1) et un éditeur de texte mono-ligne ( JTextField jTextField1 ):
Voici les 10 gestionnaires d'événements qui sont programmés sur le composant jButton de classe JButton:
Voici le diagramme événementiel des actions de souris et de clavier sur le bouton jButton1. Ces 9 actions sont programmées avec chacun des 9 gestionnaires ci-haut :
Les actions exit et enter sont représentées en Java par les événements focuGained et focusLost pour le clavier et par les événements mouseEntered et mouseExited pour la souris,. Il a été chois de programmer les deux événements de souris dans le code ci-dessous.
En Java (JBuilder)
Comme en java tous les événements sont interceptés par des objets écouteurs, ci-dessous nous donnons les diagrammes UML des classes utilisées par le programme qui est proposé :
Rappelons que les classes Cadre1$1, Cadre1$2, ... sont des classes anonymes créées lors de la déclaration de l'écouteur correspondant, Java 2 crée donc dynamiquement un objet écouteur interne (dont la référence n'est pas disponible). Ci-dessous les diagrammes jGrasp des quatre classes anonymes cadre1$1, Cadre1$2, Cadre1$3 et Cadre1$4 :
Cadre1$1:
Cadre1$2:
Cadre1$3:
Cadre1$4:
Enfin pour terminer, voici le listing Java/Swing complet de la classe représentant la fenêtre :
package ExempleJbutton;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Cadre1 extends JFrame {
JButton jButton1 = new JButton();
JTextField jTextField1 = new JTextField();
JLabel jLabel1 = new JLabel();
JCheckBox jCheckBox1 = new JCheckBox();//Construire le cadre
public Cadre1() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}//Initialiser le composant
private void jbInit() throws Exception {
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
jButton1.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(MouseEvent e) {
jButton1_mouseClicked(e);
}public void mouseEntered(MouseEvent e) {
jButton1_mouseEntered(e);
}public void mouseExited(MouseEvent e) {
jButton1_mouseExited(e);
}public void mousePressed(MouseEvent e) {
jButton1_mousePressed(e);
}public void mouseReleased(MouseEvent e) {
jButton1_mouseReleased(e);
}
});jButton1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(KeyEvent e) {
jButton1_keyPressed(e);
}public void keyReleased(KeyEvent e) {
jButton1_keyReleased(e);
}public void keyTyped(KeyEvent e) {
jButton1_keyTyped(e);
}
});jButton1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
jButton1_mouseMoved(e);
}
});
this.getContentPane().setLayout(null);
this.setSize(new Dimension(327, 211));
this.setTitle("Exemple de bouton en Java/Swing");
jTextField1.setText("jTextField1");
jTextField1.setBounds(new Rectangle(116, 82, 180, 28));
jLabel1.setText("jLabel1");
jLabel1.setBounds(new Rectangle(116, 49, 196, 26));
jCheckBox1.setText("jCheckBox1");
jCheckBox1.setBounds(new Rectangle(15, 22, 90, 25));
this.getContentPane().add(jTextField1, null);
this.getContentPane().add(jButton1, null);
this.getContentPane().add(jCheckBox1, null);
this.getContentPane().add(jLabel1, null);
}//Remplacé (surchargé) pour pouvoir quitter lors de System Close
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if(e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}void jButton1_mouseMoved(MouseEvent e) {
jCheckBox1.setSelected(true);
}void jButton1_keyPressed(KeyEvent e) {
jTextField1.setText("Bonjour");
}void jButton1_keyReleased(KeyEvent e) {
jTextField1.setText("salut");
}void jButton1_keyTyped(KeyEvent e) {
jTextField1.setForeground(Color.blue);
}void jButton1_mouseClicked(MouseEvent e) {
jLabel1.setText("Editeur de texte");
}void jButton1_mouseEntered(MouseEvent e) {
jTextField1.setBackground(Color.red);
}void jButton1_mouseExited(MouseEvent e) {
jTextField1.setBackground(Color.green);
}void jButton1_mousePressed(MouseEvent e) {
jLabel1.setText("La souris est enfoncée");
}void jButton1_mouseReleased(MouseEvent e) {
jLabel1.setText("La souris est relachée");
}void jButton1_actionPerformed(ActionEvent e) {
jTextField1.setText("Toto");
}
}