|
Swing - Interface Homme-Machine
5.5.Les composants texte
5.5.1.JTextField
Ce composant est l’un des plus
simple à utiliser pour la saisie de données, il ne
permet de saisir q’une seule ligne de texte et ne prend pas en
compte des styles (gras, italique …).
On peut utiliser l’un des deux
constructeurs suivants :
-
JTextField() : Crée un champ de saisie vide
-
JTextField(String text) : Crée un champ de
saisie avec un texte par défaut
Si vous souhaitez récupérer le contenu du champ de
saisie, il vous faudra utiliser la méthode getText()
qui vous retournera un objet de type String.
5.5.2.JPasswordField
Ce composant permet de créer un champ pour la saisie des mots
de passe. Il s’utilise de la même manière que le
composant précédent mais lorsque vous saisissez un
caractère, celui-ci est remplacé par le caractère
par défaut ‘*’. Ce dernier peut être
remplacé à l’aide de la
méthode setEchoChar(char).
Remarque : la méthode getText()
de ce composant est à dépourvoir. Il faut utiliser la
méthode getPassword()
qui retourne un tableau de caractères (char
[]).
Voici un exemple d’utilisation :
JPasswordField
monChamp = new
JPasswordField() ;
monChamp.setEchoChar('-') ; //
pour remplacer * par -
char[]
resultat = monChamp.getPassword() ;
String
conversionResultat = new
String(resultat) ;
5.5.3.JTextArea
JTextArea
est un composant semblable au JTextField car il permet à
l’utilisateur de saisir du texte mais ce composant permet
d’afficher plusieurs lignes de texte alors que le JTextField
ne permettait d’en saisir qu’une seule. A l’instar
de JTextField
il ne permet pas d’afficher des polices et des couleurs de
différents types. Il peut gèrer le passage à la
ligne et permettre de spécifier si on peut couper un mot ou
non.
L’ajout de texte dans un
JTextArea
se fait soit par le biais de l’utilisation de l’un des
deux constructeurs suivants :
-
JTextArea (String text)
-
JTextArea (String text, int rows, int
columns)
Il est aussi possible d’ajouter
du texte grâce aux méthodes suivantes :
-
append(String text) : Ajout d’une chaîne
à la fin du doument
-
insert(String text, int position) : Ajout d’une
chaîne à une position donnée
-
replaceRange(String text, int start, int end) :
Remplace la chaîne contenu entre start et end
-
setText(String text) : Remplace tout le texte par la
chaîne
Voici un exemple d’utilisation :
JTextArea
MonChamp = new
JTextArea(); //
construction de la zone de saisie
monChamp.setLineWrap(true); //
passage à la ligne actif
monChamp.setWrapStyleWord(true); //
refuser la coupure au milieu d’un mot
Le composant JTextArea
est souvent utilisée avec un JScrollPane
afin d’ajouter des barres de défilement.
5.5.4.JTextPane
Ce composant est l’un des
composants texte les plus riches. Le JTextPane
accepte différentes mises en forme ainsi que l’ajout
d’autres composants graphiques ou d’images. JTextPane
repose sur le concept de styles définis en java, qu’il
est possible de personnaliser.
Voici les méthodes à
employer pour ajouter d’autres composants ou des images dans
votre JTextPane :
-
insertComponent(Component c) ajout d’un
composant
-
insertIcon(Icon i) ajout d’une image
5.5.5.Définir des styles
Un style est encapsulé dans
un objet d’une classe implémentant l’interface
Style.
Les styles forment une arborescence. A partir d’un parent
unique, on définit les autres éléments de
l’arborescence. La racine est donc le style par défaut.
L’obtention du style par
défaut se fait de la manière suivante :
Style
racine = StyleContext.
getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
On peut alors modifier l’une
des caractéristiques du style par défaut ainsi :
//
Pour modifier le type de police
StyleConstants.setFontFamily(racine,
"SansSerif");
//
Pour modifier la taille de la police
StyleConstants.setFontSize(racine,
16);
Les autres styles vont alors pouvoir
être définis à partir du style racine grâce
à la méthode addStyle()
JTextPane
txt = new
JTextPane();
Style
x = txt.addStyle("Italique",
racine);
StyleConstants.setItalic(x,
true);
Style
y = txt.addStyle("Gras",
racine);
StyleConstants.setBold(y,
true);
Style
z = txt.addStyle("check",
racine);
StyleConstants.setComponent(z,
new
JCheckBox("bouton"));
Pour pouvoir attribuer un style au
JTextPane,
on peut utiliser la méthode setLogicalStyle(Style
s)
JTextPane
txt = new JtextPane();
txt.setLogicalStyle(txt.getStyle("Italique"));
5.5.6.Formater un contenu
Pour ajouter du texte formaté
avec un style particulier, il faudra en plus de ce qui a été
fait ci-dessus, passer par le biais d’une instance de
Document,
et de la méthode insertString(int,String,Style).
DefaultStyledDocument
doc = new
DefaultStyledDocument();
try
{
doc.insertString(doc.getLength(),
"Première
ligne de texte.\n"
,racine);
doc.insertString(doc.getLength(),
"Seconde
ligne de texte (en gras).\n",
txt.getStyle("Gras"));
//
On peut même ajouter des composants
doc.insertString(doc.getLength(),
" ", txt.getStyle("check"));
}
catch
(BadLocationException e) {
}
txt.setDocument(doc); //
Associer le Document au JTextPane
|
|
 |