Objectif : Application simple Java utilisant deux objets de classe JTextField.
- Même exemple, code source en Delphi
La fenêtre comporte un bouton (JButton jButton1) et deux éditeurs de texte mono-ligne (JTextField jTextField1, jTextField2 ):
L'application consiste après qu'un texte ait été entré dans le jTextField1 (jaune), le clic sur le bouton jButton1 déclenche la recopie de ce texte dans jTextField2 (bleu), ce dernier se mettant ensuite en lecture seule .
Schémas UML du projet
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 la classe Cadre1$1 est une classe anonyme créée lors de la déclaration de l'écouteur du bouton jButton1, Java 2 crée donc dynamiquement un objet écouteur interne (dont la référence n'est pas disponible). Ci-dessous le diagramme jGrasp de la classe anonyme cadre1$1 :
Cadre1$1:
Enfin pour terminer, voici le listing Java/Swing complet de la classe représentant la fenêtre :
package ExempleJList;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Cadre1 extends JFrame {
JTextField jTextField1 = new JTextField();
JTextField jTextField2 = new JTextField();
JButton jButton1 = new JButton();//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 {
this.getContentPane().setLayout(null);
this.setSize(new Dimension(292, 252));
this.setTitle("Copie de texte Swing");
jTextField1.setBackground(Color.yellow);
jTextField1.setText("jTextField1");
jTextField1.setBounds(new Rectangle(22, 27, 217, 28));jTextField2.setBackground(Color.cyan);
jTextField2.setText("jTextField2");
jTextField2.setBounds(new Rectangle(23, 99, 218, 27));jButton1.setText("jButton1");
jButton1.setBounds(new Rectangle(65, 166, 139, 34));
jButton1.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
this.getContentPane().add(jTextField1, null);
this.getContentPane().add(jTextField2, null);
this.getContentPane().add(jButton1, 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_actionPerformed(ActionEvent e) {
jTextField2.setText(jTextField1.getText()); // récupérer de jTextField1 et copier le texte dans jTextField2
jTextField2.setEditable(false); // jTextField2 mis en lecture seule
}
}