Ajouter un commentaire

Manou1980
Interface Graphique : Evenement KeyEvent

Bonjour,

J'ai mis au point un programme qui permet d'enregistrer sur un fichier texte ligne par ligne les caractères tapées par l'utilisateur avec une concaténation linéaire de RELATIVE TIMESTAMP.

Le souci c'est que le programme s'exécute après l'appui sur la touche "Enter": Donc le RTS ne s'applique pas correctement puisqu'il relativise le temps d’exécution du programme.

Alors qu'il devrait afficher RTS du caractère appuyé par l'utilisateur.

Or tout ceci ne peut s’exécuter que par des interfaces graphiques dans laquelle on peut trouver une interface de login\password et le mot de passe est stocké dans le fichier texte comme l'exemple qui suit:

L'utilisateur tape le login Manou et le mot de passe abc:

Dans le fichier Manou.txt, on trouve ainsi :

2011-07-01 16:26:52.388 a
2011-07-01 16:26:52.392 b
2011-07-01 16:26:52.392 c

Voici le code:

import java.io.*;
import java.sql.Timestamp;
import java.util.Date;
 
public class Profile
{
	public static String lireString()
	{ 
		String ligne_lue=null; 
		try
		{ 
			InputStreamReader lecteur=new InputStreamReader(System.in); 
			BufferedReader entree=new BufferedReader(lecteur); 
			ligne_lue=entree.readLine(); 
		} 
		catch(IOException err)
			{ 
			System.exit(0); 
			} 
		return ligne_lue; 
	} 
 
 
	public static void ecrireFichier(String path, String text) 
	{
		PrintWriter ecri ;
		try
		{
			ecri = new PrintWriter(new FileWriter(path));
			char espace = ' ';
 
			for (int i=0; i<text.length(); i++) 
			{
  				char letter = text.charAt(i); 
  				java.util.Date date= new java.util.Date();
  				ecri.print(new Timestamp(date.getTime()));
				ecri.print(espace);
    				ecri.println(letter);
 
			}
 
 
			ecri.flush();
			ecri.close();
		}
		catch (NullPointerException a)
		{
			System.out.println("Erreur : pointeur null");
		}
		catch (IOException a)
		{
			System.out.println("Problème d'IO");
		}
	}
 
	public String lireFichier (String path) 
	{
		BufferedReader lect ;
		String tmp = "";
		try
		{
			lect = new BufferedReader(new FileReader(path)) ;
			while (lect.ready()==true) 
			{
				tmp += lect.readLine() ; 
			}
		}
		catch (NullPointerException a)
		{
			System.out.println("Erreur : pointeur null");
		}
		catch (IOException a) 
		{
			System.out.println("Problème d'IO");
		}
		return tmp;
	}
 
 
 
 
 
 
	public static void main (String[] args)
	{
 
		String ch="";
		String fichier="";
		System.out.println("Entrer un mot svp:");
		ch=Profile.lireString(); 
		System.out.println("Puis entrer le nom du fichier dans lequel les infos seront stockees:");
		fichier=Profile.lireString();
		ecrireFichier (fichier, ch);	
		System.out.println("Le mot que vous avez tape est: " + ch);
		System.out.println("et il est sauvegarde dans: " + fichier);
 
	}
 
}

Or il faudrait que cette logique s'implémente avec une interface graphique:

Le problème que je rencontre est le suivant:

La méthode public void keyPressed(KeyEvent event) doit appeler la fonction ecrireFichier(String path, String text) ou je dois implémenter la lecture et l'écriture caractère par caractère dans le fichier texte Manou.txt et ceci n'esty pas possible car il se trouve que ecri.flush(); et ecri.close(); ne doit se faire qu'une fois.

Voici la méthode événementielle :

public class RecepteurClavier implements KeyListener
{

	public void keyPressed(KeyEvent event)
	{
		System.out.println("Caractère touche pressée : " + event.getKeyChar());
		char letter = event.getKeyChar(); 
  		
                °°°°°Ici doit se trouver l'appel de la fonction EcrireFichier°°°°°

	}


	public void keyReleased(KeyEvent event) {}

	public void keyTyped(KeyEvent event) {}    	
	
}

Je vous remercie d'avance de m'aider... Je suis un peu perdu :(

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
  CCC  H  H  TTTTTT  N   N  DDD  
C H H TT NN N D D
C HHHH TT N N N D D
C H H TT N NN D D
CCC H H TT N N DDD