Après avoir créé une interface
graphique simple dans notre article "Java
: fenêtre et bouton", nous allons maintenant reprendre le code
de cet exercice précédent, ajouter un champ texte dans notre interface,
et faire en sorte que le clic sur le bouton ne ferme plus le programme, mais charge
un fichier texte au sein du champ. Cela nous permettra d'avoir un premier aperçu
des flux d'entrée/sortie (E/S).
Les flux d'entrées/sorties
Les flux E/S sont le moyen de communication du programme avec l'extérieur
(l'utilisateur, la machine, le réseau...), et de fait sont un élément
fondamental de sa conception. Ils sont gérés principalement par
l'ensemble des classes se trouvant dans le paquetage java.io.*
(I/O pour input/output) : ces classes sont nombreuses (une soixantaine) et très
diverses, chacune répondant à un besoin ou une tâche précis.
C'est d'ailleurs potentiellement une cause d'erreur, tant le choix de "la
classe idéale" peut sembler ardu.
Les flux touchent donc à toute la communication en entrée (lecture
de fichier, réception des touches du clavier...) et en sortie (écriture
de fichier, affichage à l'écran, impression...).
Ces flux peuvent être de deux types : flux binaires (sous forme d'une chaîne
d'octets) ou flux de caractère (une chaîne de caractère :
du texte). La principale différence à connaître pour l'heure
est que les flux binaires ne sont pas transformés lors d'une entrée/sortie,
tandis que les flux de caractères sont intelligemment gérés
et transformés. Nous n'irons pas plus loin à ce propos ici, sachez
simplement que pour la lecture d'un fichier texte, il est préférable
de passer par un type de flux "caractère".
Mise en application
Nous allons donc "simplement" reprendre le code de notre article précédent,
"FenetreSimpleExec.java", et y ajouter les modifications qui rendront
notre programme capable de lire le fichier. Ligne à ligne, nous expliquerons
les nouveautés...
Tout d'abord, il nous faut bien entendu déclarer
que nous allons utiliser des classes du paquetage I/O. Nous ajoutons donc la ligne
suivante en début de fichier :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
Les deux classes principales restent les mêmes
:
public class FenetreSimpleExec
{
public static void main(String[] args)
{
FenetreSimple fenetre = new FenetreSimple();
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.show();
}
}
class FenetreSimple extends
JFrame
{
public FenetreSimple()
{
Toolkit k = Toolkit.getDefaultToolkit();
Dimension tailleEcran = k.getScreenSize();
int largeurEcran = tailleEcran.width;
int hauteurEcran = tailleEcran.height;
setTitle("Un programme Java");
setSize(largeurEcran/4, hauteurEcran/4);
setLocation(largeurEcran*3/8, hauteurEcran*3/8);
Contenu monContenu = new Contenu(this);
Container leContenant = getContentPane();
leContenant.add(monContenu);
}
}
Nous avons en effet toujours besoin de créer
une fenêtre JFrame dans laquelle nous afficherons notre contenu.
C'est d'ailleurs notre classe Contenu qui reçoit l'ensemble des modifications,
comme nous allons le voir à la page suivante...
Page 1 | 2
|