Ouvrir un fichier avec JFileChooser

Résolu
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012 - 6 août 2011 à 13:00
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012 - 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

17 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
6 août 2011 à 13:56
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.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
6 août 2011 à 13:57
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+
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
6 août 2011 à 18:25
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
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
6 août 2011 à 23:05
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
6 août 2011 à 23:50
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.
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
7 août 2011 à 12:24
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
8 août 2011 à 11:44
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
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
8 août 2011 à 14:12
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.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
8 août 2011 à 21:36
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();
}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
8 août 2011 à 21:40
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);
    }

}

0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
8 août 2011 à 21:42
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)
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
9 août 2011 à 13:28
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
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
9 août 2011 à 14:11
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()));

}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
9 août 2011 à 15:17
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();
}
}
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
10 août 2011 à 01:40
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 août 2011 à 11:26
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é.
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
11 août 2011 à 13:46
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
0
Rejoignez-nous