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 :

[Swing] Button search qui remplit un fichier txt


Sujet :

Java

  1. #1
    Flooxe
    Invité(e)
    Par défaut [Swing] Button search qui remplit un fichier txt
    Bonjour amis développeurs,

    Je suis en formation accélérée Java depuis 3 mois, je me retrouve en stage et je bloque sur un problème qui je pense n'est pas de mon niveau. Je vous explique.

    Je dois créer une interface en Swing. J'ai une fenêtre et un bouton pour le moment. Je bloque car mon bouton doit faire quelque chose de précis.
    Lorsque que l'utilisateur appuie sur le bouton, une fenêtre "Explorer" s'ouvre et il va chercher un dossier, par exemple "projet 1", et lorsqu'il clique dessus, le chemin de ce fichier va s'écrire dans un fichier txt par exemple sur le bureau.

    J’espère que c'est compréhensible ce que j'ai dit ^^

    Je vous mets mon code si cela peux vous aider

    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
     
    Public class Fenetre extends JFrame implements ActionListener {
     
    	private JPanel pan = new JPanel();
    	private JButton bouton;
     
    	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(this);	
    		pan.add(bouton);
    		setContentPane(pan);
    		setVisible(true);
     
    	}
     
    	public void actionPerformed(ActionEvent e) {
     
    			JFileChooser choix = new JFileChooser();
    			choix.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    			int retour = choix.showOpenDialog(this);
     
    			if(retour == JFileChooser.APPROVE_OPTION)
    				choix.getSelectedFile();
    				String t=choix.getSelectedFile().getAbsolutePath();
    				//mod.setText(t);
     
    	}
    	{
    				File fichier = new File("C:\\Users\\Flo\\workspace\\TrainDy\\monfichier.txt");
    				fichier.createNewFile();
    				FileWriter ffw = new FileWriter(fichier);
    				ffw.write();
    				ffw.close();
    	}
    }
    Dernière modification par joel.drigo ; 24/05/2017 à 10h55. Motif: Orthographe, ponctuation, suppression des mentions "verbales" inutles

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 084
    Points : 7 995
    Points
    7 995
    Par défaut
    Citation Envoyé par Flooxe Voir le message
    J’espère que c'est compréhensible ce que j'ai dit ^^
    C'est compréhensible oui. Mais la question c'est quoi ?

  3. #3
    Flooxe
    Invité(e)
    Par défaut
    Ah pardon oui Ma question est que, pour le moment, lorsque je vais chercher un dossier avec l'explorateur, il ne se passe rien, mon fichier txt reste vide. J'ai mon JFilechooser et mon FileWriter mais je n'arrive pas à les faire bosser ensemble ^^
    Dernière modification par joel.drigo ; 24/05/2017 à 10h56.

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 084
    Points : 7 995
    Points
    7 995
    Par défaut
    Forcement,

    Ca ne fera rien du tout, d'ailleurs il n'y aucune méthode write sans paramètre.

    Passe lui un string et ca devrait marcher mieux.

  5. #5
    Flooxe
    Invité(e)
    Par défaut
    Pardon mais je ne comprend pas comment faire

  6. #6
    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 : 55
    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,


    Citation Envoyé par Flooxe Voir le message
    Pardon mais je ne comprend pas comment faire
    Bah, comme tu veux écrire le chemin de ton fichier sélectionné dans le nouveau fichier, il sufft de le faire, en passant t (la variable qui contient justement ce chemin) en paramètre à la méthode write.


    Au passage fichier.createNewFile(); ne sert à rien. Le FileWriter crééra le fichier s'il n'existe pas, ou le videra dans le cas contraire.

  7. #7
    Flooxe
    Invité(e)
    Par défaut
    Nan mais je suis trop nul je n'y arrive pas

  8. #8
    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 : 55
    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
    C'est-à-dire, tu n'y arrives pas ? Tu n'arrives à taper la touche t pour écrire ffw.write(t);. Où tu y arrives, et ta classe ne compile toujours pas et donc tu as un message d'erreur que tu pourrais nous indiquer (même si on sait déjà lequel et pourquoi tu l'obtiens) ?

  9. #9
    Flooxe
    Invité(e)
    Par défaut
    ah si ça c'est bon mais l'erreur est "t cannot be resolved to a variable" et je ne trouve pas la solution ^^ pour faire en sorte que let de ffw.write(t); soit le t de String t = choix.getSelectedFile

  10. #10
    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 : 55
    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
    Voilà

    Il y a plusieurs soucis dans ton code et ça tourne autour de la problématique de bloc. Tu dois savoir que les accolades marquent des blocs en Java. Un bloc commence par { et se termine par }.

    Les blocs servent à définir des séquences d'instructions. Mais ils définissent également une portée (l'ensemble du code où on peut utiliser la variable) pour les variables déclarées à l'intérieur du bloc.
    Ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String string = "suricate";
    for(int i=0; i<string.length; i++) { // ouvre un bloc pour le for
        char c = string.charAt(i);
    } //ferme le bloc du for
    System.out.println(c); // erreur: c cannot be resolved to a variable
    ne compilera pas, par que c est déclarée dans le bloc du for, donc n'existe que à l'intérieur de ce bloc, donc pas l'extérieur, donc pas là où on essaye de l'afficher dans la console, d'où l'erreur de compilation.
    Si on créé un bloc à l'intérieur d'un bloc, la variable déclarée dans le premier bloc est visible dans le bloc à l'intérieur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String string = "suricate";
    for(int i=0; i<string.length; i++) { // ouvre un bloc pour le for
        char c = string.charAt(i);
        { // ouvre un nouveau bloc, à l'intérieur de celui du for
              System.out.println(c); // là, ça compile, même si le bloc ne sert à rien ici
        } // ferme le bloc qui est à l'intérieur du bloc du for
    } // ferme le bloc du for

    Ensuite, il faut savoir que un for, un while, un if, etc, toute structure n'exécute que l'instruction qui suit ou le bloc qui suit.
    Ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(int i=0; i<3; i++) { // ouvre un bloc pour le for
        if ( i==0 ) System.out.println(i);
        System.out.println("x");
    } // ferme le bloc du for
    Va afficher
    0
    x
    x
    
    On exécute que l'instruction System.out.println(i); quand i vaut 0.
    Alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(int i=0; i<3; i++) { // ouvre un bloc pour le for
        if ( i==0 ) { // ouvre un bloc pour le if
           System.out.println(i);
           System.out.println("x");
        } // ferme le bloc du if
    } // ferme le bloc du for
    Va afficher
    0
    x
    
    On exécute tout le bloc lorsque i vaut 0.


    Maintenant regardons ton code (J'ai ajouté des commentaires)
    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
    public void actionPerformed(ActionEvent e) { // une accolade ouvrante qui commence le bloc du code de la méthode actionPerformed
     
    			JFileChooser choix = new JFileChooser();
    			choix.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    			int retour = choix.showOpenDialog(this);
     
    			if(retour == JFileChooser.APPROVE_OPTION) // Pas d'accolade donc on exécute que choix.getSelectedFile() (qui ne fait pas grand chose)
    				choix.getSelectedFile();
                            // tout ce qui suit (jusqu'à la fin du bloc courant, c'est-à-dire à la prochaine accolade) est toujours exécuté, quelque soit ce que vaut retour (alors que ça ne devrait être exécuté que quand retour == JFileChooser.APPROVE_OPTION
    				String t=choix.getSelectedFile().getAbsolutePath();
    				//mod.setText(t);
     
    	}// une accolade fermante qui termine donc le code de la méthode actionPerformed
    	{ // une accolade ouvrante qui ouvre un bloc d'initialisation de la classe Fenetre (qui sera donc exécuté lorsque on ferra new Fenetre(). On n'est plus dans la méthode actionPerformed, puisqu'on a déjà passé l'accolade qui fermait son bloc.
    				File fichier = new File("C:\\Users\\Flo\\workspace\\TrainDy\\monfichier.txt");
    				fichier.createNewFile();
    				FileWriter ffw = new FileWriter(fichier);
    				ffw.write(t); // l'utilisation d'une variable t, déclarée dans un autre bloc, donc qui n'est pas utilisable ici
    				ffw.close();
    	} // la fin du bloc d'initialisation
    Je te laisse trouver comment tu dois bien placer les accolades.

  11. #11
    Flooxe
    Invité(e)
    Par défaut
    Merci beaucoup pour ta réponse je vais regarder et chercher

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/11/2014, 17h37
  2. Réponses: 1
    Dernier message: 30/07/2010, 14h39
  3. Réponses: 2
    Dernier message: 21/06/2010, 08h51
  4. selection des fichiers TXT qui commence par SR dans getopenfilename
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/05/2009, 17h04
  5. Réponses: 1
    Dernier message: 27/06/2006, 18h34

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