Java/Swing- Delphi
Les zones de texte multi-lignes

Objectif : On compare l'implantation de quelques propriétés, méthodes et événements du composant Swing JTextArea et du composant Delphi TMemo.




Introduction

La programmation des zones de texte multi-ligne en Delphi et en Java-Swing est identique à celle des zones de texte mono-ligne. Ces deux classes autorisent la manipulation de plusieurs lignes de texte en entrée/sortie avec comme les autres composants la variation des spécifications de la police de caractères.

Delphi
Le composant de classe TMemo de delphi permet d'afficher, de saisir, de copier, de coller du texte sur plusieurs lignes c'est la base d'un petit éditeur de texte. Un Memo stocke le texte sous formes de lignes: chaque ligne est une chaîne de caractères. La propriété objet Lines des composants Memo permet l'accès aux lignes du mémo et leur manipulation à l'identique de la propriété Items des listes. La propriété objet Lines est comme la propriété Items un objet de classe TStrings. La propriété objet Lines est la propriété centrale de cette classe TMemo, elle sert à stocker les données  de chaînes du TMemo et elle permet la gestion de tous les éléments du Mémo.

Cette propriété présente une double fonctionnalité : à la fois liste dynamique et tableau dynamique pour accéder à chacun des éléments. Ces éléments sont de type chaîne de caractère. Lines dispose de toutes les méthodes classiques utilisables dans une telle structure de donnée : suppression - modification - insertion. Après le TListBox, le TMemo est donc une deuxième encapsulation de la classe TStrings de gestion des chaînes en Delphi.
 

Java-Swing
Le composant JTextArea permet lui aussi d'afficher, de saisir, de copier, de coller du texte sur plusieurs lignes. L'objet lui-même sert à stocker les données (ici les lignes sous forme de chaînes de caractères).
 

Nous proposons de signaler ci-dessous les  propriété communes au JTextArea de java et au TMemo de Delphi.

Propriétés :
 
Propriété
TMemo(Delphi)
JTextArea(Swing)
Changer la police, la      taille ou le style 'Font'
Memo1.Font.Name:='Serif';
ou Font.Size pour la taille, Font.Style:=fsItalic;
'setFont'
jTextArea1.setFont(Font.decode("Serif")); ou  pour définir la police, le style et la taille:
jTextArea1.setFont(new java.awt.Font("Serif",1,14));
Le contenu de la zone de texte 'Text' (string)
Memo1.Text:='Toto';
'setText'
jTextArea1.setText("Toto");
Changer la couleur du       texte  'Font'
Memo1.font.Color:='clred';
'Foreground'
jTextArea1.setForeground(Color.red);
Limiter la zone en lecture seule 'ReadOnly'
Memo1.ReadOnly := true;
'setEditable'
  jTextArea1.setEditable(true);
Obtenir le nombre de lignes entrées 'Lines.Count'
Memo1.Lines.count 
'getLineCount'
jTextArea1.getLineCount( );
Ajouter une barre de défilement 'ScrollBars': il faut choisir le style ssBoth qui gère  la vue avec les deux types de barres de défilement:
Memo1.ScrollBars:=ssBoth;
Il faut déposer le jTextArea1 dans un conteneur du type JScrollPane qui gère automatiquement la vue avec les deux types de barres de défilement : JTextArea jTextArea1 = new JTextArea( );
JScrollPane jScrollPane1 = new JScrollPane ( jTextArea1 );
...
this.getContentPane( ).add( jScrollPane1, null );

 

Méthodes :

Quelques méthodes parmi les plus utiles au départ :
Méthode
TMemo(Delphi) 
JTextArea(Swing)
Selectionner le contenu de toute la zone 'SelectAll' 
Memo1.SelectAll;
'SelecteAll'
jTextArea1.SelectAll();
Effacer le contenu de la zone 'Text': entrer une chaîne vide dans la  propriété text :
Memo1.text:=' ';
Memo1.Lines.Clear;
'setText'
jTextArea1.setText("");
Couper,Copier et Coller 'CutToClipboard'
'CopyToClipboard'
'PasteFromToClipboard'
'cut()'
'copy()'
'paste()'
Sélectionner une partie du texte de la zone 'SelStart' (integer) point de départ
Memo1.SelStart := 10 ;
'SelLength' (integer) nombre de caractères à sélectionner:
Memo1.SelLength := 8 ;
'select'. 
point de départ et point d'arrivé :
jTextArea1.select(10,17) ;
Ajouter du texte à la fin du document 'Add' de 'Lines' :Ajout sur une nouvelle ligne.
Memo1.Lines.Add( 'Toto' );
'Append'
Memo1.Lines.Append('Toto' ) ;
'Append': Ajout à la fin du texte existant.
jTextArea1.Append('Toto'));
Inserer un nouvel élément dans la zone 'Insert': Insert une nouvelle ligne au rang de lignes n° x(attention : gestion par lignes)
Memo1.Lines.Insert(x,'Toto...');
'Insert': Inserer le texte à partir du varactère de rang x (attention : gestion par caractères)
jTextArea1.Insert("Toto...",x);

 

Événements
 
Événement
TMemo(Delphi)
JTextArea(Swing)
Changement du texte dans la zone (au moins un caractère) OnChange: Se produit lorsqu'au moins un caractère du texte a changé inputMethodTextChanged: identique à OnChange de Delphi (écouteur de classe InputMethodListener ).
Click dans une zone OnClick: Permet de répondre au clic sur la zone mono-ligne. mouseClicked: se produit lorsque le bouton de la souris est enfoncé et relaché sur le composant. 
Entrée dans le champ du composant OnEnter: Se produit lorsque le composant reçoit la focalisation (clavier ou souris). mouseEntered: Ici, l'événement se produit effectivement lorsqu'on vient se positionner sur le composant.(écouteur de classe MouseAdapter).

focusGained : cet événement se produit lorsqu'un bouton obtient le focus à partir du clavier (écouteur de classe FocusAdapter).

Sortie du composant OnExit: se produit uniquement quand un autre composant est sélectionné c'est à dire quand le composand perd la focalisation. mouseExited: se produit effectivement dés qu'on sort du champ du composant (écouteur de classe MouseAdapter).

focusLost : cet événement se produit lorsque le composant perd le focus à partir du clavier (touche tabulation par exemple) ou de la souris (écouteur de classe FocusAdapter).

Enfoncer une touche OnKeyDown keyPressed
Relacher la touche OnKeyUp keyReleased
Enfoncer et relacher une touche OnkeyPress keyTyped
Enfoncer le bouton de souris sur le composant OnMouseDown: se produit quand le bouton gauche de la souris est enfoncé.  mousePressed: strictement équivalent à OnMouseDown de Delphi (écouteur de classe MouseAdapter).
Relacher le bouton de souris OnMouseUp: quand le bouton de la souris est relaché. mouseReleased: même chose que OnMouseUp (écouteur de classe MouseAdapter).
Déplacer  le curseur sur le composant OnMouseMove: se produit quand le curseur vient sur le composant mouseMoved: même chose que OnMouseMove (écouteur de classe MouseAdapter).

 

Remonter