Utilisation d'une zone de texte, seconde version

     

Vous pouvez écrire dans la zone centrale de l'applet ci-dessus. L'entier indiqué dans la petite zone de texte donne la taille de la police de caractères utilisée dans la zone centrale. Vous pouvez modifier cette taille. Votre demande sera prise en compte au fur et à mesure de votre modification.  

alt : l'applet n'est pas visible par votre navigateur (dans le menu Outils, Modules complémentaires, activer le plugin Java(TM) Platform SE 6 U32 6.0.320.5 s'il est désactivé)
L'application illustrée ici correspond à l'applet ci-dessus et est donc peu différente de la précédente.

Voici le code de l'application.

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.event.DocumentListener;
import javax.swing.event.DocumentEvent;
import java.awt.BorderLayout;
import java.awt.Font;

public class TexteEtFonteBis extends JFrame implements DocumentListener {
JTextField saisieTaille = new JTextField(5);
JTextArea grandeZone = new JTextArea(4, 10);

public TexteEtFonteBis() {
JLabel taille = new JLabel(" Taille de la fonte");
JScrollPane texteAsc;
JPanel panneauTaille = new JPanel();
Font fonte;
int tailleInitiale = 20;

saisieTaille.setText(Integer.toString(tailleInitiale));
saisieTaille.getDocument().addDocumentListener(this);
panneauTaille.setLayout(new BorderLayout(5, 5));
panneauTaille.add(taille, BorderLayout.CENTER);
panneauTaille.add(saisieTaille, BorderLayout.EAST);

fonte = new Font("TimesRoman", Font.PLAIN, tailleInitiale);
grandeZone.setFont(fonte);
grandeZone.setText("bonjour");

texteAsc = new JScrollPane(grandeZone);
add(panneauTaille, BorderLayout.NORTH);
add(texteAsc, BorderLayout.CENTER);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocation(300, 300);
setVisible(true);
}

public void actualiserTaille() {
int taillePolice;
try {
taillePolice = Integer.parseInt(saisieTaille.getText());
grandeZone.setFont(new Font("TimesRoman",
Font.PLAIN, taillePolice));
}
catch(NumberFormatException exc) {}
}

public void insertUpdate(DocumentEvent evt) {
actualiserTaille();
}

public void removeUpdate(DocumentEvent evt) {
actualiserTaille();
}

public void changedUpdate(DocumentEvent evt) {}
}


class EssaiTexteEtFonteBis {
public static void main(String[] arg) {
new TexteEtFonteBis();
}
}
Vous pouvez trouver ci-dessous :
  • le TexteEtFonteBis.java.
  • le code de l'applet.
    saisieTaille.getDocument().addDocumentListener(this); : la méthode getDocument est héritée de la classe javax.swing.JTextComponent ; l'objet qu'elle retourne implémente l'interface javax.swing.text.Document. Cette interface délare entre autres la méthode addDocumentListener que nous utilisons ici. Dans notre application, le paramètre indiqué à la méthode addDocumentListener est l'instance this de la classe TexteEtFonte ; cette dernière sera en conséquence le "listener" des changements qui se produisent dans le composant saisieTaille.
    DocumentListener : l'interface déclare les trois méthodes qui sont définies dans notre classe TexteEtFonte.
    public void insertUpdate(DocumentEvent e) : cette méthode est ici appelée quand l'utilisateur insère des caractères dans la zone de saisie de la taille, et cela parce que l'on a affectée un DocumentListener à ce composant.
    public void removeUpdate(DocumentEvent e) : cette méthode est ici appelée quand l'utilisateur retire des caractères dans la zone de saisie de la taille.
    public void changedUpdate(DocumentEvent e) : cette méthode serait appelée pour d'autres types de documents où l'utilisateur changerait des caractéristiques de style.

    ©Irène Charon, Télécom - ParisTech 2010