Depandance entre 2 classe java
Résolu
pedro0077
Messages postés
5
Statut
Membre
-
bilbokey Messages postés 126 Statut Membre -
bilbokey Messages postés 126 Statut Membre -
salut tout le monde;
mon probleme est le suivant; j'ai 2 classe une qui parcoure les dossier est affiche le fichier choisi ainsi que son path; une autre classe qui lit le fichier choisi est affiche le texte du fichier qu'on a choisi a l'aide de la classe parcourir().
voici la classe ki permet de parcourir les fichiers; qui affiche le lien du fichier
voici la classe qui permet de lire le fichier passer en parametre
Mon probleme c'est ke j'arrive pas a recupere le fichier pour la lecture de fichier; j'ai essayé avec l'heritage de meme j'ai essayer de mettre les 2 methodes dans une seule classe mais ca marche pas
merci d'avance de votre aide
cordialement
mon probleme est le suivant; j'ai 2 classe une qui parcoure les dossier est affiche le fichier choisi ainsi que son path; une autre classe qui lit le fichier choisi est affiche le texte du fichier qu'on a choisi a l'aide de la classe parcourir().
voici la classe ki permet de parcourir les fichiers; qui affiche le lien du fichier
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class graph extends JFrame {
public graph {}
public void parcourir() {
// Crée un panneau
JPanel contenuFenêtre = new JPanel();
// Affecte un gestionnaire de présentation à ce panneau
GridLayout disposition = new GridLayout(4,2);
contenuFenêtre.setLayout(disposition);
// Crée les contrôles en mémoire
JButton button = new JButton("parcourir");
contenuFenêtre.add(button);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(chooser);
if(returnVal == JFileChooser.APPROVE_OPTION) {
String lien_fichier = chooser.getSelectedFile().getPath();
System.out.println("vous voulez ouvrir le fichier : " +
chooser.getSelectedFile().getName());
System.out.println(lien_fichier );
}
}
} );
// Crée le cadre et y ajoute le panneau
JFrame cadre = new JFrame("Boutton parcourir");
cadre.setContentPane(contenuFenêtre);
// Affecte ses dimensions à la fenêtre et la rend visible
cadre.setSize(400,100);
cadre.setVisible(true);
}
}
voici la classe qui permet de lire le fichier passer en parametre
public class lecture extends graph {
public void main(String args[]){
graph badr= new graph();
badr.parcourir();
String chaine="";
String fichier =lien_fichier;
//lecture du fichier texte
try{
InputStream ips=new FileInputStream(fichier);
InputStreamReader ipsr=new InputStreamReader(ips);
BufferedReader br=new BufferedReader(ipsr);
String ligne;
while ((ligne=br.readLine())!=null){
System.out.println(ligne);
chaine+=ligne+"\n";
}
br.close();
}
catch (Exception e){
System.out.println(e.toString());
}}}
Mon probleme c'est ke j'arrive pas a recupere le fichier pour la lecture de fichier; j'ai essayé avec l'heritage de meme j'ai essayer de mettre les 2 methodes dans une seule classe mais ca marche pas
merci d'avance de votre aide
cordialement
3 réponses
-
Salut,
Il faut mettre une variable dans la classe(en generale on la met en private en java pour eviter son acces n'importe comment et on ajoute un getter(methode pour la recuperer)):
graph:import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class graph extends JFrame { public graph () {} private String lien_fichier=""; public String getlien_fichier() { return lien_fichier; } public void parcourir() { // Crée un panneau JPanel contenuFenêtre = new JPanel(); // Affecte un gestionnaire de présentation à ce panneau GridLayout disposition = new GridLayout(4,2); contenuFenêtre.setLayout(disposition); // Crée les contrôles en mémoire JButton button = new JButton("parcourir"); contenuFenêtre.add(button); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ JFileChooser chooser = new JFileChooser(); int returnVal = chooser.showOpenDialog(chooser); if(returnVal == JFileChooser.APPROVE_OPTION) { lien_fichier = chooser.getSelectedFile().getPath(); System.out.println("vous voulez ouvrir le fichier : " + chooser.getSelectedFile().getName()); System.out.println(lien_fichier ); } } } ); // Crée le cadre et y ajoute le panneau JFrame cadre = new JFrame("Boutton parcourir"); cadre.setContentPane(contenuFenêtre); // Affecte ses dimensions à la fenêtre et la rend visible cadre.setSize(400,100); cadre.setVisible(true); } }
lecture:
public class lecture extends graph { public static void main(String[] args){ graph badr= new graph(); badr.parcourir(); String chaine=""; String fichier =badr.getlien_fichier(); //lecture du fichier texte try{ InputStream ips=new FileInputStream(fichier); InputStreamReader ipsr=new InputStreamReader(ips); BufferedReader br=new BufferedReader(ipsr); String ligne; while ((ligne=br.readLine())!=null){ System.out.println(ligne); chaine+=ligne+"\n"; } br.close(); } catch (Exception e){ System.out.println(e.toString()); }}} -
merci pour votre aide
c'est la meme solution que j'ai essayer mais j'ai une exeptionjava.io.FileNotFoundException:
merci -
ba c'est normale. Il cherche le lien du fichier alors qu'au debut dans swing le nom du fichier est null. soit tu remplace la fonction getlien_fichier() par :
public String getlien_fichier() {
while (lien_fichier=="") {
}
return lien_fichier;
}
Mais c'est un peu a l'arrache, soit dans ton main tu fais:
public static void main(String[] args) throws InterruptedException{
graph badr= new graph();
badr.parcourir();
String chaine="";
String fichier2 ="";
//lecture du fichier texte
while (true) {
String fichier =badr.getlien_fichier();
if (!fichier.equals(fichier2)) {
fichier2=fichier;
try{
InputStream ips=new FileInputStream(fichier);
InputStreamReader ipsr=new InputStreamReader(ips);
BufferedReader br=new BufferedReader(ipsr);
String ligne;
while ((ligne=br.readLine())!=null){
System.out.println(ligne);
chaine+=ligne+"\n";
}
br.close();
}
catch (Exception e){
System.out.println("hello");
System.out.println(e.toString());
}
}
Thread.currentThread();
Thread.sleep(2000);
}
}
}
Ou tu peux inover. le truc il faut pas que quand il ouvre le fichier, celui-ci soit a nulle. Ou le mieu serait de faire faire implementer graph le patern observable si c'est vraiment important:
https://openclassrooms.com/fr/courses
et tu check quand la variable lien_fichier est modifiee