Ajouter une action a un bouton...

Résolu/Fermé
killdragon - 24 déc. 2012 à 10:42
killdragon Messages postés 33 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 1 janvier 2013 - 26 déc. 2012 à 10:59
Bonjour,

en cette veille de noël je me retrouve avec un dernier soucis, je voudrais donc lier une action a un bouton, a savoir ouvrir un fichier dont on possède la liste sous les yeux, le but étant donc de cliquer sur un fichier dans la liste, puis d'appuyer sur le bouton "ouvrir" pour que le fichier sélectionné s'ouvre.

Il s'agit donc de fichiers pdf uniquement ainsi pour ouvrir le fichier il me semble que cette portion de code est bonne :

public class ShowPDF { 
public static void main(String[] args) throws Exception { 
Process p = 
Runtime.getRuntime() 
.exec("rundll32 url.dll,FileProtocolHandler c:/pdf/mypdf.pdf"); 
p.waitFor(); 
System.out.println("Done."); 
} 
}


Maintenant je n'arrive pas a le relier a mon code, ayant procédé différemment pour les autres boutons je me retrouve légèrement coincé...

Pourriez vous m'aider encore une fois svp?

Voila mon code :

package projet;

import java.awt.Color;
import java.awt.Component;
import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.border.LineBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ArboIHM extends JFrame implements ActionListener {

private List<File> liste = new ArrayList<File>();
private JPanel panel = new JPanel();
private JPanel boutons = new JPanel();
private JButton triNom = new JButton("Arborescence triée par nom");
private JButton triTaille = new JButton("Arborescence triée par taille");
// private JButton triDate = new JButton("Arborescence triée par date");
private File test = new File(".");
private ArboTrieeParNom a1 = new ArboTrieeParNom(test);;
private ArboTrieeParTaille at1 = new ArboTrieeParTaille(test);
private JList laListe = new JList(liste.toArray());;
private JLabel nomLabel = new JLabel("Nom : ");
private JLabel tailleLabel = new JLabel("Taille : ");
private JLabel dateLabel = new JLabel("Date : ");
private JPanel nom = new JPanel();
private JPanel taille = new JPanel();
private JPanel date = new JPanel();
private JTextField nomTexte = new JTextField("Veuillez sélectionner un fichier",20);
private JTextField tailleTexte = new JTextField("Veuillez sélectionner un fichier",20);
private JTextField dateTexte = new JTextField("Veuillez sélectionner un fichier",20);
private JTextField typeTexte = new JTextField("Veuillez sélectionner un fichier",20);
private JScrollPane scrollPane = new JScrollPane(laListe);
private JButton ouvrir = new JButton("Ouvrir le fichier");
private GridLayout g1 = new GridLayout(3, 1);
private JLabel typeLabel = new JLabel("Type : ");
private JPanel type = new JPanel();
private JScrollPane j1 = new JScrollPane(laListe);
private JPanel infos = new JPanel();
private FileProperty p1;
private File f1;

public ArboIHM() {
init();

}

private class triParNom implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
laListe.setListData(a1.getListe().toArray());
}
}

private class triParTaille implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
laListe.setListData(at1.getListe().toArray());
}
}


public void init() {
setVisible(true);
this.setJMenuBar(this.creationBarreDeMenu());
setTitle("Projet de JAVA");
pack();
setSize(700, 300);
this.setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);

nomTexte.setEditable(false);
dateTexte.setEditable(false);
tailleTexte.setEditable(false);
typeTexte.setEditable(false);


add(panel);
nom.add(nomLabel);
nom.add(nomTexte);
date.add(dateLabel);
date.add(dateTexte);
taille.add(tailleLabel);
taille.add(tailleTexte);
type.add(typeLabel);
type.add(typeTexte);

boutons.add(triNom);
boutons.add(triTaille);
boutons.add(ouvrir);

infos.add(nom);
infos.add(date);
infos.add(taille);
infos.add(type);

panel.setLayout(g1);
panel.add(boutons);
panel.add(infos);
j1.setViewportView(laListe);
panel.add(j1);

triNom.addActionListener(new triParNom());
triTaille.addActionListener(new triParTaille());

laListe.setBorder(new LineBorder(Color.black));
laListe.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
laListe.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
File f1 = (File) laListe.getSelectedValue();
FileProperty p1 = new FileProperty(f1.getName());
nomTexte.setText(f1.getName());
dateTexte.setText(p1.getFormatedDate());
tailleTexte.setText(p1.getFormatedSize());
typeTexte.setText(p1.getType());

}
});

panel.updateUI();
}

private JMenuBar creationBarreDeMenu() {

JMenuBar jmb = new JMenuBar();

JMenu fichier = new JMenu("Fichier");
JMenu aide = new JMenu("?");

JMenuItem itemNouveau = new JMenuItem("Nouveau");
JMenuItem itemSauver = new JMenuItem("Sauvegarder");
JMenuItem itemCharger = new JMenuItem("Charger");
JMenuItem itemQuitter = new JMenuItem("Quitter");
JMenuItem itemPropos = new JMenuItem("A Propos");
JMenuItem itemAide = new JMenuItem("Aide");

fichier.add(itemNouveau);
fichier.add(itemSauver);
fichier.add(itemCharger);
fichier.add(itemQuitter);
aide.add(itemPropos);
aide.add(itemAide);

jmb.add(fichier);
jmb.add(aide);

itemQuitter.addActionListener(this);

return jmb;

}

public void actionPerformed(ActionEvent e) {

String action = e.getActionCommand();

if (action.equals("Quitter")) {
System.exit(0);
}
}

public static void main(String... args) {
new ArboIHM();
}
}


Merci d'avance :)


A voir également:

5 réponses

killdragon Messages postés 33 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 1 janvier 2013
24 déc. 2012 à 12:06
Je précise néanmoins que je possède d'autres classes et que les autres boutons sont reliés et fonctionnent correctement...
Je ne possède en revanche pas de classe pour le bouton Ouvrir, d'ou mon soucis
0
killdragon Messages postés 33 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 1 janvier 2013
24 déc. 2012 à 18:37
je résume une dernière fois de façon explicite le soucis : Quand on ouvre le programme on voit une liste avec pleins de PDF dedans, je voudrais donc cliquer sur un d'entre eux, ensuite cliquer sur le bouton "ouvrir le fichier" et que ça ouvre directement le fichier dans acrobat reader.
0
killdragon Messages postés 33 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 1 janvier 2013
24 déc. 2012 à 21:16
A priori en changeant le private FileProperty p1; par du private static FileProperty p1; je peux passer ma variable en globale, et je pourrais m'en servir ensuite pour ma méthode "ouvrir" sauf que je ne vois pas quoi mettre dedans...
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
25 déc. 2012 à 08:58
"ensuite cliquer sur le bouton "ouvrir le fichier" et que ça ouvre directement le fichier dans acrobat reader."

Dans ce cas, ce n'est pas la peine de passer pas le RUNTIME32.DLL qui était nécessaire pour avoir la fenêtre "Ouvrir avec" de Windows, alors que l'on peut ouvrir n'importe quel fichier avec son programme par défaut en utilisant la classe Desktop, ce qui permet d'être compatible avec tous les systèmes.

ouvrir.addActionListener(new ActionListener()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        Desktop.getDesktop().open(laListe.getSelectedValue());
    }	
});
0
killdragon Messages postés 33 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 1 janvier 2013
25 déc. 2012 à 13:20
Bon, mon binome a totalement changé le projet pendant que je cherchais comment relier le bouton, donc je vais voir si je peux faire ça moi même, sinon je reposterais ici le nouveau code, avec les nouvelles classes...désolé...
0
killdragon Messages postés 33 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 1 janvier 2013
25 déc. 2012 à 18:55
Bon voila le DERNIER code qui ne changera plus !


Voila mon interface graphique :

package projet;

import java.awt.Color;
import java.awt.Component;
import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.border.LineBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.NoSuchElementException;

public class ArboIHM extends JFrame implements ActionListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private List<File> liste = new ArrayList<File>();
	private JPanel panel = new JPanel();
	private JPanel boutons = new JPanel();
	private JButton triNom = new JButton("Arborescence triée par nom");
	private JButton triTaille = new JButton("Arborescence triée par taille");
	// private JButton triDate = new JButton("Arborescence triée par date");
	private File test = new File("C:/Users/");
	private ArboTriee a1 = new ArboTrieeParNom(test);;
	private ArboTriee at1 = new ArboTrieeParTaille(test);
	private JList laListe = new JList(liste.toArray());;
	private JLabel nomLabel = new JLabel("Nom : ");
	private JLabel tailleLabel = new JLabel("Taille : ");
	private JLabel dateLabel = new JLabel("Date : ");
	private JPanel nom = new JPanel();
	private JPanel taille = new JPanel();
	private JPanel date = new JPanel();
	private JTextField nomTexte = new JTextField(
			"Veuillez sélectionner un fichier", 20);
	private JTextField tailleTexte = new JTextField(
			"Veuillez sélectionner un fichier", 20);
	private JTextField dateTexte = new JTextField(
			"Veuillez sélectionner un fichier", 20);
	private JTextField rechercheTexte = new JTextField(
			"Veuillez saisir le nom d'un fichier", 20);
	private JScrollPane scrollPane = new JScrollPane(laListe);
	private JButton ouvrir = new JButton("Ouvrir le fichier");
	private GridLayout g1 = new GridLayout(3, 1);
	private JLabel rechercheLabel = new JLabel("Rechercher : ");
	private JPanel recherche = new JPanel();
	private JScrollPane j1 = new JScrollPane(laListe);
	private JPanel infos = new JPanel();
	private File f1;
	private String str = "";
	private JMenuBar jmb = new JMenuBar();

	private JMenu fichier = new JMenu("Fichier");
	private JMenu aide = new JMenu("?");

	private JMenuItem itemNouveau = new JMenuItem("Nouveau");
	private JMenuItem itemSauver = new JMenuItem("Sauvegarder");
	private JMenuItem itemCharger = new JMenuItem("Charger");
	private JMenuItem itemQuitter = new JMenuItem("Quitter");
	private JMenuItem itemPropos = new JMenuItem("A Propos");
	private JMenuItem itemAide = new JMenuItem("Aide");

	public ArboIHM() {
		init();
	}

	public void init() {
		setVisible(true);
		this.setJMenuBar(this.creationBarreDeMenu());
		setTitle("Projet de JAVA");
		pack();
		setSize(700, 300);
		this.setLocationRelativeTo(null);
		setResizable(false);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		nomTexte.setEditable(false);
		dateTexte.setEditable(false);
		tailleTexte.setEditable(false);

		add(panel);
		nom.add(nomLabel);
		nom.add(nomTexte);
		date.add(dateLabel);
		date.add(dateTexte);
		taille.add(tailleLabel);
		taille.add(tailleTexte);
		recherche.add(rechercheLabel);
		recherche.add(rechercheTexte);

		boutons.add(triNom);
		boutons.add(triTaille);
		boutons.add(ouvrir);

		infos.add(nom);
		infos.add(date);
		infos.add(taille);
		infos.add(recherche);

		panel.setLayout(g1);
		panel.add(boutons);
		panel.add(infos);
		j1.setViewportView(laListe);
		panel.add(j1);

		triNom.addActionListener(new TriParNom());
		triTaille.addActionListener(new TriParTaille());

		rechercheTexte.addKeyListener(new RechercheFichier());
		rechercheTexte.addMouseListener(new ClicGauche());

		laListe.setBorder(new LineBorder(Color.black));
		laListe.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		laListe.addListSelectionListener(new ListSelectionListener() {
			public void valueChanged(ListSelectionEvent e) {
				if (laListe.isSelectionEmpty() == false) {
					File f1 = (File) laListe.getSelectedValue();
					SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy H:mm:ss");
					Date d = new Date(f1.lastModified());
					nomTexte.setText(f1.getName());
					dateTexte.setText(sdf.format(d));
					tailleTexte.setText(getFormatedSize(f1));
				}
			}
		});

		panel.updateUI();
	}

	public String getFormatedSize(File file) {
		int size = (int) (file.length() / 1024) + 1;
		if (size > 1024) {
			return (size / 1024) + " Mo";
		} else {
			return size + " ko";
		}
	}
	
	private JMenuBar creationBarreDeMenu() {
		fichier.add(itemNouveau);
		fichier.add(itemSauver);
		fichier.add(itemCharger);
		fichier.add(itemQuitter);

		aide.add(itemPropos);
		aide.add(itemAide);

		jmb.add(fichier);
		jmb.add(aide);

		itemQuitter.addActionListener(new Quitter());
		itemNouveau.addActionListener(new Nouveau());
		itemSauver.addActionListener(new Sauvegarder());
		itemCharger.addActionListener(new Charger());
		itemPropos.addActionListener(new Propos());
		itemAide.addActionListener(new Aide());

		return jmb;
	}

	private class TriParNom implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			laListe.setListData(a1.getListe().toArray());
		}
	}

	private class RechercheFichier implements KeyListener {
		public void keyPressed(KeyEvent e) throws NoSuchElementException {
			if (e.getKeyCode() == KeyEvent.VK_ENTER) {
				String str = rechercheTexte.getText();
				try {
					if (str.equals(a1.rechercherFichier(str).getName())) {
						SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy H:mm:ss");
						Date d = new Date(a1.rechercherFichier(str).lastModified());
						nomTexte.setText(a1.rechercherFichier(str).getName());
						dateTexte.setText(sdf.format(d));
						tailleTexte.setText(getFormatedSize(a1.rechercherFichier(str)));
					}
				} catch (NoSuchElementException f) {
					System.err.println(f.getMessage());
					new Erreur();
				}
			}
		}

		@Override
		public void keyReleased(KeyEvent arg0) {
			// TODO Auto-generated method stub

		}

		@Override
		public void keyTyped(KeyEvent arg0) {
			// TODO Auto-generated method stub

		}

	}

	public class ClicGauche implements MouseListener{

		@Override
		public void mouseClicked(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseEntered(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseExited(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mousePressed(MouseEvent e) {
			if (e.getButton() == MouseEvent.BUTTON1)//Bouton droit
			{
				rechercheTexte.setText("");
			}
		}

		@Override
		public void mouseReleased(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}
		
	}
	
	private class TriParTaille implements ActionListener {
		public void actionPerformed(ActionEvent arg0) {
			laListe.setListData(at1.getListe().toArray());
		}
	}

	private class Quitter implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String action = e.getActionCommand();
			if (action.equals("Quitter")) {
				System.exit(0);
			}
		}
	}

	private class Nouveau implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String action = e.getActionCommand();
			if (action.equals("Nouveau")) {
				laListe.setListData(liste.toArray());
				nomTexte.setText("");
				dateTexte.setText("");
				tailleTexte.setText("");
				rechercheTexte.setText("");
				laListe.setSelectedIndex(-1);
			}
		}
	}

	private class Sauvegarder implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String action = e.getActionCommand();
			if (action.equals("Sauvegarder")) {
				a1.serialize("test");
			}
		}
	}

	private class Charger implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String action = e.getActionCommand();
			if (action.equals("Charger")) {
				a1.read("test");
				laListe.setListData(a1.getListe().toArray());
			}
		}
	}

	private class Propos implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String action = e.getActionCommand();
			if (action.equals("A Propos")) {
				new APropos();
			}
		}
	}

	private class Aide implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String action = e.getActionCommand();
			if (action.equals("Aide")) {
				new Aider();
			}
		}
	}



	public static void main(String... args) {
		new ArboIHM();
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		
	}
}




Mon interface Arbo :

package projet;

import java.io.File;
import java.util.List;
import java.util.NoSuchElementException;

public interface ArboTriee {

	public File rechercherFichier(String nom) throws NoSuchElementException;
	public void parcourir(File file);
	public List<File> getListe();
	public void setListe(List<File> liste);
	public void serialize(String fileName);
	public void read(String fileName) ;
	public String toString();
	
}



l'arbo triée par taille :

package projet;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.NoSuchElementException;

import javax.swing.JFileChooser;

public class ArboTrieeParTaille implements Comparator<File>, ArboTriee {
	private List<File> liste = new ArrayList<File>();
	private File file;

	public ArboTrieeParTaille(File file) {
		parcourir(file);
		Collections.sort(liste, new MonComparatorTaille());
	}

	public void parcourir(File file) {
		if (file.isDirectory()) {
			File[] list = file.listFiles();
			if (list != null) {
				for (int i = 0; i < list.length; i++) {
					parcourir(list[i]);
				}
			}
		} else {
			if (file.getName().endsWith("pdf")) {
				liste.add(file);
			}
		}
	}

	public File rechercherFichier(String nom) throws NoSuchElementException {
		for (File file : liste) {
			if (file.getName().equals(nom)) {
				return file;
			}
		}
		throw new NoSuchElementException(
				"Il n'y a pas de fichier ayant le nom : " + nom);

	}

	public List<File> getListe() {
		return liste;
	}

	public void setListe(List<File> liste) {
		this.liste = liste;
	}

	public Long getSize() {
		return this.file.length();
	}

	public int compare(File o1, File o2) {
		long nb1 = o1.length();
		long nb2 = o2.length();
		if (nb1 > nb2) {
			return 1;
		} else {
			if (nb1 == nb2) {
				return 0;
			} else {
				return -1;
			}
		}
	}

	public String getFormatedSize(File file) {
		int size = (int) (file.length() / 1024) + 1;
		if (size > 1024) {
			return (size / 1024) + " Mo";
		} else {
			return size + " ko";
		}
	}

	public static String getFileExt(String filename) {
		int pos = filename.lastIndexOf(".");
		if (pos > -1) {
			return filename.substring(pos);
		} else {
			return filename;
		}
	}

    public String getType(File file) {
        JFileChooser chooser = new JFileChooser();
        return chooser.getTypeDescription(file);
    }
	
	public String toString() {
		String s = "Les fichiers pdf suivants sont présents dans l'arborescence : \n";
		for (File fichier : liste) {
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy H:mm:ss");
			Date d = new Date(fichier.lastModified());

			s = s + " Nom : " + fichier + " Date : " + sdf.format(d)
					+ " Taille : " + getFormatedSize(fichier)
			 + " Type : " + getType(fichier) + " Extension : "
			 + getFileExt(fichier.getName()) + "\n";
		}
		return s;
	}

	public void serialize(String fileName) {
		ObjectOutputStream oos;
		try {
			oos = new ObjectOutputStream(new FileOutputStream(fileName));
			oos.writeObject(getListe());
			oos.close();
		} catch (FileNotFoundException e) {
			System.err.println(e.getMessage());
		} catch (IOException e) {
			System.err.println(e.getMessage());
		}
		System.out.println("good");
	}

	public void read(String fileName) {
		try {
			ObjectInputStream inputStream = new ObjectInputStream(
					new FileInputStream(fileName));
			List<File> readObject = (List<File>) inputStream.readObject();
			setListe(readObject);
			inputStream.close();
		} catch (FileNotFoundException e) {
			System.err.println(e.getMessage());
		} catch (ClassNotFoundException e) {
			System.err.println(e.getMessage());
		} catch (IOException e) {
			System.err.println(e.getMessage());
		}
	}

}




Et enfin celle par nom !

package projet;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.NoSuchElementException;

import javax.swing.JFileChooser;

public class ArboTrieeParNom implements ArboTriee {

	private List<File> liste = new ArrayList<File>();

	public ArboTrieeParNom(File file) {
		parcourir(file);
		Collections.sort(liste);
	}

	public File rechercherFichier(String nom) throws NoSuchElementException {
		for (File file : liste) {
			if (file.getName().equals(nom)) {
				return file;
			}
		}
		throw new NoSuchElementException(
				"Il n'y a pas de fichier ayant le nom : " + nom);
	}

	public void parcourir(File file) {
		if (file.isDirectory()) {
			File[] list = file.listFiles();
			if (list != null) {
				for (int i = 0; i < list.length; i++) {
					parcourir(list[i]);
				}
			}
		} else {
			if (file.getName().endsWith("pdf")) {
				liste.add(file);
			}
		}
	}

	public List<File> getListe() {
		return liste;
	}

	public void setListe(List<File> liste) {
		this.liste = liste;
	}

	public void serialize(String fileName) {
		ObjectOutputStream oos;
		try {
			oos = new ObjectOutputStream(new FileOutputStream(fileName));
			oos.writeObject(getListe());
			oos.close();
		} catch (FileNotFoundException e) {
			System.err.println(e.getMessage());
		} catch (IOException e) {
			System.err.println(e.getMessage());
		}
		System.out.println("good");
	}

	public void read(String fileName) {
		try {
			ObjectInputStream inputStream = new ObjectInputStream(
					new FileInputStream(fileName));
			List<File> readObject = (List<File>) inputStream.readObject();
			setListe(readObject);
			inputStream.close();
		} catch (FileNotFoundException e) {
			System.err.println(e.getMessage());
		} catch (ClassNotFoundException e) {
			System.err.println(e.getMessage());
		} catch (IOException e) {
			System.err.println(e.getMessage());
		}
	}

	public String getFormatedSize(File file) {
		int size = (int) (file.length() / 1024) + 1;
		if (size > 1024) {
			return (size / 1024) + " Mo";
		} else {
			return size + " ko";
		}
	}

	public static String getFileExt(String filename) {
		int pos = filename.lastIndexOf(".");
		if (pos > -1) {
			return filename.substring(pos);
		} else {
			return filename;
		}
	}

    public String getType(File file) {
        JFileChooser chooser = new JFileChooser();
        return chooser.getTypeDescription(file);
    }
	
	public String toString() {
		String s = "Les fichiers pdf suivants sont présents dans l'arborescence : \n";
		for (File fichier : liste) {
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy H:mm:ss");
			Date d = new Date(fichier.lastModified());

			s = s + " Nom : " + fichier + " Date : " + sdf.format(d)
					+ " Taille : " + getFormatedSize(fichier)
			 + " Type : " + getType(fichier) + " Extension : "
			 + getFileExt(fichier.getName()) + "\n";
		}
		return s;
	}
}



La j'admet être complètement perdu puisque beaucoup de choses ont changé...

Donc je ne vois absolument plus comment faire pour résoudre mon soucis, a savoir comment faire comprendre a l'ordi que lorsque je clique sur un fichier dans la liste il doit ensuite l'ouvrir lorsque je clique sur "ouvrir le fichier"....

De plus étant largement en retard maintenant puisque je me dois de réviser les examens je n'ai pas vraiment de temps a perdre avec ce soucis qui pourtant est de loin anodin en théorie !

Bref si vous avez une solution (totalement viable si possible) ce serait super, la j'admet ne plus suivre la logique....
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
25 déc. 2012 à 21:48
Déjà, j'ai de gros problèmes pour démarrer la fenêtre !

En effet le constructeur public ArboIHM n'est pas appelé... cela vient certainement d'un blocage dans toutes les initialisations qui sont faites en live (peut-être parce que si on n'a pas votre fichier de test, cela plante !) Alors je t'avais déjà mentionné, que ce genre de chose n'était pas à faire, qu'il fallait que les initialisations soient faites dans les constructeurs, et qu'elles ne devaient concerner que les membres qui contenait les données : les JPanel, les JLabels, et la plupart des autres composants Swing n'ont rien à faire en membre de classes alors qu'ils sont des variables locales du constructeur de la JFrame (la méthode "init" ne devrait même pas exister)

Dans le forum tu poses tes problèmes et on t'expliques comment les résoudre, mais ton travail ne se résume pas à poser la question, il s'agit aussi de comprendre les réponses !
Bref, je te laisse relire tous les conseils que j'ai déjà pu te donner au cours de nos différentes discussions, et les appliquer, car là j'ai l'impression de parler dans le vide...
0

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

Posez votre question
killdragon Messages postés 33 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 1 janvier 2013
Modifié par killdragon le 25/12/2012 à 19:40
j'ai effectué cette classe, qui est censée ouvrir le fichier, mais j'ai provoqué de nombreuses erreurs que je ne sais pas résoudre.... ><

 private class AffichePDF implements ActionListener {  
  public void actionPerformed(ActionEvent arg0) {  
   if ( Desktop.isDesktopSupported() ) { 
    Desktop desktop = Desktop.getDesktop(); 
    if (desktop.isSupported(Desktop.Action.OPEN)) { 
     try { 
      desktop.open(f1); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
   } 
  }  
  }



Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: File must not be null
	at java.awt.Desktop.checkFileValidation(Unknown Source)
	at java.awt.Desktop.open(Unknown Source)
	at projet.ArboIHM$AffichePDF.actionPerformed(ArboIHM.java:284)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$2.run(Unknown Source)
	at java.awt.EventQueue$2.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
0
killdragon Messages postés 33 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 1 janvier 2013
25 déc. 2012 à 19:46
Je suis donc sous Vista et le programme est censé tourner sur tout OS
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
25 déc. 2012 à 21:47
Ici l'erreur est évidente et marquée en toute lettre sur la première ligne :
java.lang.NullPointerException: File must not be null

Tu ne peux donc pas faire : desktop.open(f1); si tu as f1==null

Remarque : si tu veux moins d'erreurs affichées tu peux remplacer ton e.printStackTrace(); par System.err.println(e); qui est plus court...
0
killdragon Messages postés 33 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 1 janvier 2013
25 déc. 2012 à 23:10
c'est ce que je me disais, mais pourtant il me semblait que le fichier sur lequel je clique est enregistré sous f1 ?

Donc tu aurais une solution pour y remédier ? ou remplacer le f1 défectueux par ce qui marche ?
0
killdragon Messages postés 33 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 1 janvier 2013
25 déc. 2012 à 23:35
je n'ai rien dit, j'ai simplement mis une mauvaise déclaration dans le valuechanged, j'ai mis File f1 = (File) laListe.getSelectedValue(); au lieu de f1 = (File) laListe.getSelectedValue(); .... désolé pour ma stupidité...
0
killdragon Messages postés 33 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 1 janvier 2013
25 déc. 2012 à 23:43
Maintenant en effet je vais mettre en pratique la disposition des différents panels, labels etc...
Je voulais simplement te dire mais j'ai oublié que mon binome modifie le projet de son coté aussi, comme tu as pu le constater, du coup je ne voulais pas faire les modifs avant d'avoir fini en entier les modifs que je comptais faire, maintenant je peux me permettre de le faire voila :)

En tout cas je te remercie énormément pour ta patience et ta compréhension, c'est d'ailleurs grace a ta remarque très constructive que j'ai repéré mon erreur....merci du fond du coeur :)
0