//TP323.java est une première implémentation simple du TP3 2ème partie.
//On ne fait que créer la fenêtre, comme demandé dans l'énoncé, et
//permettre de lire le fichier texte (fonction développée dans la première partie du TP3)
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class tp3 {
//définition de la taille de la fenêtre
public final static int HT = 400;
public final static int LG = 400;
static Frame F;
static Vari V=new Vari();
static FichierEtudiant Fi = new FichierEtudiant();
//La TextArea tfListe_Auditeurs, qui va nous servir à afficher la liste des auditeurs, doit
//pouvoir être créée/modifiée depuis les méthodes creerFenetre et lireFichier : on la définit
//donc comme une variable de classe.
static List Liste_Auditeurs;
static List Liste_Presentations;
//La méthode lireFichier reprend la méthode de lecture du fichier texte déjà développée pour
//la première partie du TP. Seule modification : le nom des auditeurs est stocké au fur et à
//mesure de la lecture des lignes dans le TextArea tfListe_Auditeurs
static void lireFichier() throws IOException {
Fichier f = new Fichier();
Vari V = new Vari();
f.ouvrir("Liste.txt","Lecture");
String chaine ="";
String prenom, nom, titre, date;
int i1, i2, i3;
do {
chaine = f.lire();
if (chaine != null) {
i1 = chaine.indexOf('\t');
i2 = chaine.indexOf('\t',i1+1);
i3 = chaine.indexOf('\t',i2+1);
prenom = chaine.substring(0,i1);
nom = chaine.substring(i1+1,i2);
titre = chaine.substring(i2+1,i3);
date = chaine.substring(i3+1,chaine.length());
Auditeur x = new Auditeur(prenom, nom);
//On ajoute prenom + nom à la liste des auditeurs
Liste_Auditeurs.add(prenom+" "+nom);
Presentation p = new Presentation(titre,date);
//On ajoute titre à la liste des présentations
Liste_Presentations.add(titre);
x.choixPres(p);
V.ajoutAuditeur(x);
}
} while (chaine != null);
f.fermer();
}
//La méthode main est simple :
public static void main (String [] arg) {
F = new Frame("Application TP3");
creerFenetre(F);
//La méthode creerFenetre fait appel aux composants AWT :
static void creerFenetre(Frame F) {
F.setSize(LG, HT);
//construction de l'objet barre de menu avec sa propre fonte
MenuBar barre_Menu =new MenuBar();
//construction des objets menus puis des items (commandes de menus)
Menu menu_Fichier = new Menu("Fichier");
Menu menu_Auditeur = new Menu("Auditeur");
Menu menu_Presentation = new Menu("Presentation");
Menu menu_Aide = new Menu("Aide");
MenuItem menu_Lire = new MenuItem("Lire fichier texte");
//on ajoute un listener pour engager la lecture
menu_Lire.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
try {
tp3.lireFichier();
}
catch(Exception e) {}
}
});
MenuItem menu_Ouvrir = new MenuItem("Ouvrir");
MenuItem menu_Sauvegarder = new MenuItem("Sauvegarder");
//on ajoute un listener pour engager la lecture
menu_Sauvegarder.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
try {
tp3.creerSauvegarde();
}
catch(Exception e) {}
}
});
MenuItem menu_CreerA = new MenuItem("Creer");
//on ajoute un listener pour créer un nouvel auditeur
menu_CreerA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
try {
System.out.println("event");
tp3.nouvelAuditeur();
}
catch(Exception e) {}
}
}
MenuItem menu_SupprimerA = new MenuItem("Supprimer");
MenuItem menu_Associer = new MenuItem("Associer presentation");
MenuItem menu_CreerP = new MenuItem("Creer");
MenuItem menu_SupprimerP = new MenuItem("Supprimer");
//on place les items dans les menus
menu_Fichier.add(menu_Lire);
menu_Fichier.add(menu_Ouvrir);
menu_Fichier.add(menu_Sauvegarder);
menu_Auditeur.add(menu_CreerA);
menu_Auditeur.add(menu_SupprimerA);
menu_Auditeur.add(menu_Associer);
menu_Presentation.add(menu_CreerP);
menu_Presentation.add(menu_SupprimerP);
//on place les menus dans la barre de menu avec un gridLayout par défaut
barre_Menu.add(menu_Fichier);
barre_Menu.add(menu_Auditeur);
barre_Menu.add(menu_Presentation);
barre_Menu.setHelpMenu(menu_Aide);
//on place les barres de menu, d'outils, d'état et la surface de dessin
F.setMenuBar(barre_Menu);
//On associe un BorderLayout
F.setLayout(new BorderLayout());
//On crée et ajoute 2 Label
Panel panneau1 = new Panel();
Panel panneau2 = new Panel();
Label label1 = new Label("Liste des auditeurs :");
Label label2 = new Label("Liste des présentations :");
Liste_Auditeurs = new List(10);
Liste_Presentations = new List(10);
panneau1.setLayout(new GridLayout(1,2));
panneau2.setLayout(new GridLayout(1,2));
panneau1.add(label1);
panneau1.add(label2);
panneau2.add(Liste_Auditeurs);
panneau2.add(Liste_Presentations);
F.add(panneau1,BorderLayout.NORTH);
F.add(panneau2,BorderLayout.CENTER);
F.show();
}
//méthode crerSauvegarde crée un fichier d'archivage archive.dat
static void creerSauvegarde() throws IOException {
Fi.ouvrir("Ecriture");
Fi.ecrire(V);
Fi.fermer();
}
static void nouvelAuditeur(String Auditeur) {
Auditeur x = new Auditeur("Test", "NouveauNom");
Liste_Auditeurs.add("Test NouveauNom");
V.ajoutAuditeur(x);
}
public class Fichier {
private BufferedWriter fW;
private BufferedReader fR;
private char mode;
public void ouvrir(String nomDuFichier, String s) throws IOException{
mode = (s.toUpperCase()).charAt(0);
File f = new File(nomDuFichier);
if (mode == 'R' || mode == 'L') {
URL url = getClass().getClassLoader().getResource(nomDuFichier);
if (url==null)
throw new IOException("Fichier non trouve : "+nomDuFichier);
fR = new BufferedReader(new InputStreamReader(url.openStream())); }
// fR = new BufferedReader(new FileReader(f));
else if (mode == 'W' || mode == 'E')
fW = new BufferedWriter(new FileWriter(f));
}
public void fermer() throws IOException {
if (mode == 'R' || mode == 'L') fR.close();
else if (mode == 'W' || mode == 'E') fW.close();
}
public String lire() throws IOException {
String chaine = fR.readLine();
return chaine;
}
public void ecrire(int tmp) throws IOException {
System.out.println("Dans ecrire "+tmp);
String chaine = "";
chaine = chaine.valueOf(tmp);
System.out.println("Dans ecrire "+chaine);
if (chaine != null) {
fW.write(chaine,0,chaine.length());
fW.newLine();
}
}
public class FichierEtudiant {
private ObjectOutputStream fWo;
private ObjectInputStream fRo;
private char mode;
private String nomDuFichier = "archive.dat";
public void ouvrir(String s) throws IOException {
mode = (s.toUpperCase()).charAt(0);
if (mode == 'R' || mode == 'L')
fRo = new ObjectInputStream(new FileInputStream(nomDuFichier));
else if (mode == 'W' || mode == 'E')
fWo = new ObjectOutputStream(new FileOutputStream(nomDuFichier));
}
public Vari lire() throws IOException, ClassNotFoundException {
Vari tmp = (Vari) fRo.readObject();
return tmp;
}
public void ecrire(Vari tmp) throws IOException {
if (tmp != null) fWo.writeObject(tmp);
}
public class Vari implements Serializable {
private Vector liste;
public Vari() {
liste=new Vector();
}
public void ajoutAuditeur(Auditeur a) {
liste.addElement(a);
}
public void afficheAuditeurs() {
Auditeur x;
for(int i=0; i<liste.size(); i++) {
x=(Auditeur) liste.elementAt(i);
x.donneNom();
}
}
public class Auditeur implements Serializable {
private String nom, prenom;
private Presentation pres;
public Auditeur(String prenom, String nom) {
this.nom=nom;
this.prenom=prenom;
}
public void choixPres(Presentation p) {
this.pres=p;
}
public void donneNom() {
System.out.println(" Prenom : "+prenom+" Nom : "+nom);
}
public class Presentation implements Serializable {
private String titre, date;
public Presentation(String titre,String date) {
this.titre=titre;
this.date=date;
}
public void afficheTitre() {
System.out.println(" Titre : "+titre);
}
public void fermer() throws IOException {
if (mode == 'R' || mode == 'L') fRo.close();
else if (mode == 'W' || mode == 'E') fWo.close();
}}
}
}
}
Pourquoi Exception in thread "main" java.lang.Error: Unresolved compilation problem:
at tp3.main(tp3.java:56)?
Configuration: Windows XP
Internet Explorer 6.0