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 :

JTextField qui écrit dans un fichier texte


Sujet :

Java

  1. #1
    Flooxe
    Invité(e)
    Par défaut JTextField qui écrit dans un fichier texte
    Bonjour,

    J'ai un petit problème de débutant ^^, j'ai créer une interface avec 3 Bouton qui lorsque l'on clic dessus on va chercher un dossier ou un fichier avec un jfilechooser et le chemin s'écrit dans un fichier txt jusque la tout va bien mais la je bloque avec mon JTextField, j'essaie de faire 2 carrés pour que l'utilisateur rentre des chiffres dedans et lorsqu'il appuie sur valider les chiffre s’écrive a la suite dans mon fichier txt et la je bloque totalement avec l'action listener je pense, je ne sais pas comment faire si quelqu'un a une idée.

    Je vous met mon code, j'espère qu'il est compréhensible.

    Merci

    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
     
    public class Fenetre extends JFrame implements ActionListener {
     
    	private JPanel pan = new JPanel();
    	private JButton bouton;
    	private JButton bouton2;
    	private JButton bouton3;
    	private JButton bouton4;
    	private JTextField jtx;
    	private JTextField jtx2;
    	private JLabel  label;
    	private File document;
     
    	public Fenetre() throws IOException{
     
    		setTitle("Logiciel");
    		setSize(700, 400);
    		setResizable(true);
    		setLocationRelativeTo(null);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		bouton = new JButton("Folder Test");
    		bouton.addActionListener(new BoutonListener());	
    		pan.add(bouton);
     
    		bouton2 = new JButton("Nome Dati");
    		bouton2.addActionListener(new Bouton2Listener());
    		pan.add(bouton2);
     
    		bouton3 = new JButton("NomeSpeedMinMax");
    		bouton3.addActionListener(new Bouton3Listener());
    		pan.add(bouton3);
     
    		label = new JLabel("Col Speed Min Max");
    		jtx = new JTextField();
    		jtx.setPreferredSize(new Dimension(30, 30));
     
    		bouton4 = new JButton("Valider");
    		bouton4.addActionListener(new Bouton4Listener());
     
    		jtx2 = new JTextField();
    		jtx2.setPreferredSize(new Dimension(30, 30));
     
    		pan.add(label);
    		pan.add(jtx);
    		pan.add(jtx2);
    		pan.add(bouton4);
     
    		setContentPane(pan);
    		setVisible(true);
     
     
    	}
     
    	class BoutonListener implements ActionListener{
     
    		public void actionPerformed(ActionEvent e) {
     
    			JFileChooser choix = new JFileChooser();
    			choix.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    			int retour = choix.showOpenDialog(bouton);
     
    			if(retour == JFileChooser.APPROVE_OPTION)
    				choix.getSelectedFile();
    			String t =choix.getSelectedFile().getAbsolutePath();
     
    			try {
    				folderTest(t);
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
    		}
     
    		public void folderTest (String name) throws IOException{
    			File fichier = new File("C:\\Users\\Flo\\workspace\\TrainDy\\monfichier.txt");
    			document=fichier;
    			FileWriter ffw = new FileWriter(fichier);
    			ffw.write("Folder Test : " + name);
    			ffw.close();
     
    		}
     
     
    	}
    	class Bouton2Listener implements ActionListener{
     
    		public void actionPerformed(ActionEvent e){
     
    			JFileChooser choix = new JFileChooser();
    			choix.setFileSelectionMode(JFileChooser.FILES_ONLY);
    			int retour = choix.showOpenDialog(bouton2);
     
    			if(retour == JFileChooser.APPROVE_OPTION)
    				choix.getSelectedFile();
    			String t =choix.getSelectedFile().getAbsolutePath();
    			try {
    				nomeDati(t,document);
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
    		}
    		public void nomeDati (String name, File fichier) throws IOException{
    			BufferedWriter bufferedwriter = new BufferedWriter (new FileWriter (fichier, true));
    			String texte="Nome Dati : " + name;
    			bufferedwriter.newLine();
    			bufferedwriter.write(texte);
    			bufferedwriter.close();
     
    		}
    	}
     
    	class Bouton3Listener implements ActionListener{
     
    		public void actionPerformed(ActionEvent e){
     
    			JFileChooser choix = new JFileChooser();
    			choix.setFileSelectionMode(JFileChooser.FILES_ONLY);
    			int retour = choix.showOpenDialog(bouton2);
     
    			if(retour == JFileChooser.APPROVE_OPTION)
    				choix.getSelectedFile();
    			String t =choix.getSelectedFile().getAbsolutePath();
    			try {
    				NomeSpeedMinMax(t,document);
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
    		}
    		public void NomeSpeedMinMax (String name, File fichier) throws IOException{
    			BufferedWriter bufferedwriter = new BufferedWriter (new FileWriter (fichier, true));
    			String texte="Nome Dati : " + name;
     
    			bufferedwriter.write(texte);
    			bufferedwriter.close();
     
    		}
    	}
    	class Bouton4Listener implements ActionListener{
     
    		public void actionPerformed(ActionEvent e){
     
    		}
    	}
    	public void NomeSpeedMinMax (String name, File fichier) throws IOException{
    		BufferedWriter bufferedwriter = new BufferedWriter (new FileWriter (fichier, true));
    		String texte = "ColSpeedMinMax : " + jtx;
     
    		bufferedwriter.write(texte);
    		bufferedwriter.close();
    	}
    	@Override
    	public void actionPerformed(ActionEvent e) {
     
    	}
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour récupérer le texte saisi dans un JTextField, il faut utiliser la méthode getText().

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BufferedWriter bufferedwriter = new BufferedWriter (new FileWriter (fichier, true));
    		String texte = "ColSpeedMinMax : " + jtx.getText(); 
     
    		bufferedwriter.write(texte);
    		bufferedwriter.close();
    Maintenant, 2 ou 3 choses :
    1. Il faut fermer le fichier dans tous les cas, y compris en cas d'exception. Alors que dans ton code, s'il y a une IOException, on quitte la méthode avant d'appeler bufferedwriter.close().
      Il faudrait écire :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      BufferedWriter bufferedwriter = null;
      try{
      bufferedwriter = new BufferedWriter (new FileWriter (fichier, true));
       
      		String texte = "ColSpeedMinMax : " + jtx.getText(); 
       
      		bufferedwriter.write(texte);
      }
      finally {
         if ( bufferedwriter!=null )		bufferedwriter.close();
      }
      Mais depuis Java 7, on a quelque chose qui permet d'éviter de se prendre la tête avec ça :le try-with-resource
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      try(BufferedWriter bufferedwriter = = new BufferedWriter (new FileWriter (fichier, true))) {
       
      		String texte = "ColSpeedMinMax : " + jtx.getText(); 
       
      		bufferedwriter.write(texte);
      }
      Même plus besoin de faire le close.
      A noter qu'on même faire plus simple :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      try(BufferedWriter bufferedwriter = Files.newBufferedWriter(fichier.toPath(), StandardOpenOption.APPEND)) {
          String texte = "ColSpeedMinMax : " + jtx.getText();
       
          bufferedwriter.write(texte);
      }
    2. Tout ce que tu vas écrire dans ton fichier va bien s'ajouter à la fin, mais les uns derrières les autres, sans séparation. Il sera difficile de distinguer les différentes saisies. Tu vas avoir une ligne du genre
      ColSpeedMinMax : 1ColSpeedMinMax : 2ColSpeedMinMax : 3ColSpeedMinMax : 4
      Tu pourras toujours découper avec ColSPeedMinMax, mais ce serait plus simple si tu avais :
      ColSpeedMinMax : 1
      ColSpeedMinMax : 2
      ColSpeedMinMax : 3
      ColSpeedMinMax : 4
      Et pour faire ça, il te suffit d'appeler bufferedwriter.newLine(); qui va passer à la ligne.


    Enfin, le dossier dans lequel le fichier doit être écrit n'existe pas forcément. Ecrire un fichier dans un dossier qui n'existe pas cause une exception. Tu peux l'éviter en créant le dossier par :
    Par ailleurs, je ne sais pas à quoi est destiné dans ton programme, mais imposer un chemin de fichier en dur peut être également problématique. C:\\Users\\Flo\\ n'existe pas forcément dans tous les environnements Windows (il n'existe pas de compte flo sur mon pc par exemple). C: n'existe pas sur tous les OS (sur linux ça n'a aucun sens). C: n'est pas forcément autorisé en écriture sur toutes les configurations Windows, etc.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Flooxe
    Invité(e)
    Par défaut
    Merci pour toutes ces infos, petite question comment je fait pour valider le fait d'avoir écrit dans la case ? car la pour le moment ça ne remplis pas mon fichier.txt

    Merci

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    L'utilisateur devra appuyer la touche entrée pour valider la saisie dans le champ. Pour réagir à cet appui, utilise un ActionListener comme pour un bouton.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    JTextField field=new JTextField();
    field.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.out.println("Saisie validée : " + ((JTextField)e.getSource()).getText());
        }
    });
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programme qui écrit dans un fichier
    Par unix27 dans le forum OTIC (ex-Genio)
    Réponses: 3
    Dernier message: 14/10/2013, 10h57
  2. Réponses: 9
    Dernier message: 21/06/2013, 16h02
  3. remplacer du texte déjà écrit dans un fichier
    Par djfeeler dans le forum Débuter
    Réponses: 1
    Dernier message: 18/07/2010, 21h03
  4. Réponses: 1
    Dernier message: 05/11/2009, 15h19
  5. [vb6]:Recuperer les caracteres qui sont dans un fichier text
    Par flav66 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/10/2006, 08h44

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