Ouvrir un fichier avec JFileChooser [Résolu]

cs_horka 30 Messages postés mardi 21 juin 2011Date d'inscription 4 avril 2012 Dernière intervention - 6 août 2011 à 13:00 - Dernière réponse : cs_horka 30 Messages postés mardi 21 juin 2011Date d'inscription 4 avril 2012 Dernière intervention
- 11 août 2011 à 13:46
Bonjour tout le monde,
J'utilise le composant jFilechooser pour visualiser mes documents en utilisant eclipse.
Le problème est que en appuyant sur le bouton ouvrir il n’y a pas de résultat.
Le fichier ne s'ouvre pas.
Le code que je l'implémente est pris à partir de cette adresse:
http://java.developpez.com/faq/gui/?page=jfilechooser
La classe implémenter est FilePreview.java
Est ce que vous connaissez comment ça se fait je vous remercie d'avance
Afficher la suite 

17 réponses

Répondre au sujet
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 6 août 2011 à 13:56
+3
Utile
Bonjour,

C'est normal, le bouton ouvrir n'ouvre pas le fichier que tu séléctionne, c'est à toi de définir ce qui se passe quand tu cliques sur ouvrir.

Pour reprendre le même code que dans ton message précédent, si pour toi ouvrir signifie afficher le texte dans une zone de texte :

    JTextArea resultat = new JTextArea();
    JFileChooser fc = new JFileChooser();
    int returnVal = fc.showOpenDialog(FileChooserDemo.this);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
        File file = fc.getSelectedFile();
        String s = lireFichier(file);
        //Lire fichier est à coder, tu trouveras des exemples sur ce site
        resultat.setText(s);
    }


Je pense que tu voudrais que ton fichier soit ouvert dans un éditeur de texte particulier. Ca doit être possible mais je ne sais pas comment le faire. Ca doit se trouver facilement sur internet.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Julien39
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 6 août 2011 à 13:57
0
Utile
Et pour tes titre, essayes d'en trouver de plus explicites la prochaine fois. Ici, tous les messages pourraient avoir le titre "programmation java".

Je le remplace par "ouvrir un fichier avec JFileChooser".

a+
Commenter la réponse de cs_Julien39
cs_horka 30 Messages postés mardi 21 juin 2011Date d'inscription 4 avril 2012 Dernière intervention - 6 août 2011 à 18:25
0
Utile
Bonsoir tout le monde,
Bonsoir Julien39,
j'ai implémenté une classe qui permet de représenter un fichier dtd à partir d'un document xml sous forme d'arbre.
Lors de son exécution je précise en tant d'argument dans le main le fichier dtd à traiter.
la classe est nommée Tokenize.
j'ai essayé d’utiliser le composant jFilechooser pour d'une part sélectionner le fichier .dtd souhait et d'autre part utiliser un bouton ouvrir ou générer pour exécuter la classe Tokenize.
mon problème est que je ne connais pas où je dois écrire le code qui doit être exécuter suite à l'appui sur le bouton ouvrir et qui génère l'arbre correspondant au fichier dtd?
S'il vous plait connaissez-vous comment je peux faire ça c'est urgent

Cordialement
Haithem
Commenter la réponse de cs_horka
cs_horka 30 Messages postés mardi 21 juin 2011Date d'inscription 4 avril 2012 Dernière intervention - 6 août 2011 à 23:05
0
Utile
Bonsoir tout le monde,
j’espère que ma question soit claire.
En fait je veux juste connaitre est il possible de faire l'exécution d'une classe à partir de ce composant c'est à dire lorsque je sélectionne un fichier parmi ceux existants dans mon ordinateur et je clique sur le bouton "ouvrir",la classe qui permet générer l'arbre correspondant au fichier sélectionné est exécuter et le résultat apparaît dans une autre fenêtre par exemple.
Commenter la réponse de cs_horka
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 6 août 2011 à 23:50
0
Utile
Oui, tu peux utiliser le JFileChooser de cette manière. A un moment dans ton code, tu dois avoir une fonction qui prend en entrée un fichier DTD. C'est avant d'appeler cette fonction que tu dois afficher le JFileChooser.
Commenter la réponse de cs_Julien39
cs_horka 30 Messages postés mardi 21 juin 2011Date d'inscription 4 avril 2012 Dernière intervention - 7 août 2011 à 12:24
0
Utile
Bonjour à tous,
Bonjour Julien,
Est ce que vous pouvez me donner une idée sur la fonction qui me permet de passer le fichier dtd en paramètre.
Merci d'avance
Commenter la réponse de cs_horka
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 8 août 2011 à 11:44
0
Utile
Bonjour,

C'est une autre question donc ouvre un nouveau sujet.

De plus, ce n'est pas une question mais ca me semble être une demande de code déguisée. Donc ouvre un nouveau sujet en posant une question sur ce qui te poses problème précisément.

Bon courage
Commenter la réponse de cs_Julien39
cs_horka 30 Messages postés mardi 21 juin 2011Date d'inscription 4 avril 2012 Dernière intervention - 8 août 2011 à 14:12
0
Utile
Bonjour à tous,
j'ai réussie de passer l'argument à ma fonction.En fait maintenant dés que je sélectionne mon fichier dtd à partir de jfilechooser et je clique sur le bouton ouvrir le fichier s'ouvre.
En fait je n'affiche pas le fichier tel qu'il est ,j'insère des commentaires et des explications.
Le problème maintenant est que l'affichage se fait dans la console d'exécution de l'eclipse puisque à mon avis c'est parce que j'utilise uniquement le system.out.println.Je ne sais pas c'est ça la raison ou non mais j'ai utilisé le system.out.println puisque comme j'ai dis il ya beaucoup d'affichage.
Je veux que l'affichage se fait dans une autre fenêtre à part j'ai essayé avec le composant JOptionPane mais il n'affiche qu'un simple message.
Est ce que je dois éliminer les affichages ou non ?
Est ce que je dois utiliser par exemple le composant jframe et le jtext area?
Vraiment je suis bloqué.
J'ai essayé avec plusieurs méthodes mais pas de résultat toujours l'affichage se présente dans la console.
Est ce que vous pouvez m'aider s'il vous plait et merci d'avance.
Commenter la réponse de cs_horka
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 8 août 2011 à 21:36
0
Utile
Oui, la meilleure solution est d'utiliser un JTextArea (éventuellement une JList) je pense.

Il suffit de transformer un peu ton code. Par exemple, si tu as :
public void exemple(){
   String s = "s1";
   System.out.println(s);
   System.out.println("1");
}


Tu remplaces par :
public String exemple(){
   StringBuilder sb = new StringBuilder();
   String s = "s1";
   sb.append(s);
   sb.append("\n");//Pour aller a la ligne
   sb.append("1");
   return sb.toString();
}
Commenter la réponse de cs_Julien39
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 8 août 2011 à 21:40
0
Utile
Je te donne même un exemple de code qui permet d'afficher ce que tu veux dans un JTextArea
public class Affichage extends JFrame {

    public Affichage(String aAfficher){
        super("Fenetre d'affichage");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new GridLayout(1, 0));
        JTextArea texte = new JTextArea();
        texte.setText(aAfficher);
        texte.setEditable(false);
        getContentPane().add(texte);
        setSize(300, 300);
        setVisible(true);
    }

}

Commenter la réponse de cs_Julien39
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 8 août 2011 à 21:42
0
Utile
Et il te suffit d'appeler cette classe Affichage avec le résultat de la fonction précédente.

(Note que je n'ai pas testé ce code, il est possible qu'il y ait de petites erreurs même si je ne pense pas)
Commenter la réponse de cs_Julien39
cs_horka 30 Messages postés mardi 21 juin 2011Date d'inscription 4 avril 2012 Dernière intervention - 9 août 2011 à 13:28
0
Utile
Bonjour à tous,
Bonjour Julien,
J'ai essayé d'appliquer votre code sur mon application.
j'ai essayé de transformer tout les system.out.print par votre proposition.Puis,j'ai implémenté le code de la classe affichage.
Lorsque j'exécute l'application et après la sélection de fichier dtd ,il y'a affichage d'une fenêtre qui ne contient que le nom de fichier.j'ai changé le type de paramètre de la fonction affichage en file au lieu de string mais le même résultat.
Je vous donne une séquence du code avant puis après la modification:

Le code avant la modification:

if (entity.isParsed)
System.out.println("Entity: "+entity.name);
if (entity.value != null)
System.out.println(" Value: "+entity.value);


Le code après la modification:

if (entity.isParsed)
StringBuilder bv = new StringBuilder();
String j="Entity: "+entity.name;
bv.append(j);
bv.toString();
bv.append("\n");


if (entity.value != null)
{
StringBuilder b1 = new StringBuilder();
String j1=" Value: "+entity.value;
b1.append(j1);
b1.toString();
b1.append("\n");

}
Est ce que vous pouvez m'expliquer où est l'erreur et comment la résoudre ?
merci d'avance
Commenter la réponse de cs_horka
cs_horka 30 Messages postés mardi 21 juin 2011Date d'inscription 4 avril 2012 Dernière intervention - 9 août 2011 à 14:11
0
Utile
Bonjour,
au niveau de l'appel de la classe affichage j'écris:

int returnVal = chooser.showDialog(null,"Parcourir DTD");
if(returnVal == JFileChooser.APPROVE_OPTION) {
Affichage v= new Affichage(Tokenize.main(chooser.getSelectedFile().getName()));

}
Commenter la réponse de cs_horka
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 9 août 2011 à 15:17
0
Utile
Bonjour,

Pour l'appel de la classe affichage, ce n'est pas bon. La classe Affichage ouvre une fenêtre qui contient le texte passé en paramètre. Il est donc normal que tu ais uniquement le nom du fichier qui s'affiche.

Il faut que tu lui spécifie ce que tu veux afficher, pour afficher le contenu du fichier choisit, tu peux faire ceci :

int returnVal = chooser.showDialog(null,"Parcourir DTD"); 
if(returnVal == JFileChooser.APPROVE_OPTION) { 
try{
StringBuilder texteDuFichier = new StringBuilder();
fluxEntree = new BufferedReader(new FileReader(hooser.getSelectedFile().getName()));
ligneLue = fluxEntree.readLine();
while(ligneLue!=null){
texteDuFichier.append(ligneLue);
ligneLue = fluxEntree.readLine();
}
new Affichage(texteDuFichier.toString()); 
}
catch(IOException exc){
exc.printStackTrace();
}
try{
fluxEntree.close();
}
catch(IOException e){
e.printStackTrace();
}
}
Commenter la réponse de cs_Julien39
cs_horka 30 Messages postés mardi 21 juin 2011Date d'inscription 4 avril 2012 Dernière intervention - 10 août 2011 à 01:40
0
Utile
Bonsoir à tous,
Bonsoir Julien,
Je vous remercie pour votre code il me permet maintenant de représenter le fichier dtd à parcouru .
Le seul problème est que la classe principale tokenize contient une représentation bien détaillé de mon fichier dtd mais lorsque je l'appelle :

fluxEntree = new BufferedReader(newFileReader(Tokenize.main(chooser.getSelectedFile().getName())));

la fenêtre affiché contient juste le fichier dtd sans explications.
Il se peut que l'utilisation de system.out.print ne s'affiche pas dans la fenêtre.
Est ce que je doit utiliser le code que vous me donner à chaque fois que je rencontre une affichage dans la console c'est à dire par exemple au lieu de:

System.out.println("Entity: "+entity.name);

j'écris:

StringBuilder bv = new StringBuilder();
String j="Entity: "+entity.name;
bv.append(j);
bv.toString();
bv.append("\n");

Et ce que je dois utiliser le même StringBuilder pour toute affichage.
Donc mon problème est comment afficher ces explications et commentaires dans la fenêtre d’affichage?
Est ce que vous pouvez m'aider et merci d'avance.
Cordialement
Haithem
Commenter la réponse de cs_horka
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 10 août 2011 à 11:26
0
Utile
Bonjour,

Je t'ai un peu balancé les StringBuilder sans t'expliquer ce que c'est.

C'est une classe qui permet de créer des chaines de caractères et de les concaténer de facon à utiliser moins de ressources que la concaténation par défaut des String.

Pour récupérer la valeur de la chaine de caractères créée, tu fais un sb.toString().

La valeur à afficher dans la fenêtre que je t'ai donnée est donc le résultat de ce que tu as créé comme affichage (plus détaillé que le simple fichier DTD). Tu as remplacé les System.out par la création d'un StringBuilder et ensuite, utilises la méthode toString() sur ce StringBuilder pour appeler l'affichage de la fenêtre que je t'ai donné.
Commenter la réponse de cs_Julien39
cs_horka 30 Messages postés mardi 21 juin 2011Date d'inscription 4 avril 2012 Dernière intervention - 11 août 2011 à 13:46
0
Utile
Bonsoir à tous,
Je vous tous remercie pour vos conseils dans mes travaux surtout pour vous Julien.
Bon, mes travaux sont encore plus étendus que ça j'espère que je ne rencontre pas encore de difficultés.
Je vous remercie Julien encore une fois.

Cordialement
Haithem
Commenter la réponse de cs_horka

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.