IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Int Graph : Evenement KeyEvent


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut Int Graph : 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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    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

  2. #2
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    je ne suis pas expert en matière de flux, mais ce que j'aurais fait, c'est une classe perso par exemple "writeIntoFichier".
    A l'instanciation, un flux est ouvert.
    cette classe contiendrait la méthode writeCharacter qui écrirai le carac dans le fichier.
    Cette classe comporterai aussi la méthode close destinée à être appelée à la fermeture du programme.

    C'est évident qu'il ne faut pas ouvrir et fermer un flux pour chaque caractère.
    Il faut en ouvrir un seul et le fermer à la fin ... enfin, c'est comme cela que je vois les chose ...

Discussions similaires

  1. [XL-2007] Déclenchement evenement graph
    Par moyen dans le forum Excel
    Réponses: 6
    Dernier message: 14/03/2010, 18h45
  2. Passer paramètre int par un evenement
    Par Ivenoproblemwiththat dans le forum C#
    Réponses: 2
    Dernier message: 30/01/2007, 17h56
  3. [KeyEvent] evenement clavier ctrl+enter
    Par JoJoS dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 28/09/2006, 14h11
  4. develloppement avec ORBit: service d'evenement
    Par belmontv dans le forum CORBA
    Réponses: 3
    Dernier message: 06/06/2002, 22h56
  5. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo