Depandance entre 2 classe java

Résolu
pedro0077 Messages postés 5 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

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
A voir également:

3 réponses

bilbokey Messages postés 126 Statut Membre 11
 
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());
			}}}
0
pedro0077 Messages postés 5 Statut Membre
 
merci pour votre aide
c'est la meme solution que j'ai essayer mais j'ai une exeption
java.io.FileNotFoundException: 

merci
0
bilbokey Messages postés 126 Statut Membre 11
 
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
0