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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class ShowPDF { public static void main(String[] args) throws Exception { Process p = Runtime.getRuntime() .exec("rundll32 url.dll,FileProtocolHandler c:/pdf/mypdf.pdf"); 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 :
Je précise néanmoins que je possède d'autres classes et que les autres boutons sont reliés et fonctionnent correctement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182 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(); } }
Je ne possède en revanche pas de classe pour le bouton Ouvrir, d'ou mon soucis
Ceci est normalement le seul soucis qui me pose un gros problème et je ne trouve vraiment pas la solution...j'ai regardé sur plein de sites, sauf que je n'ai pas pu trouver de réponse puisque dans mon cas l'utilisateur doit sélectionner un fichier dans la liste qui est affichée, avant de cliquer sur "ouvrir" pour que le programme ouvre directement le fichier sélectionné...
Si jamais mon problème est trop dur a résoudre, il est possible que vous me fournissiez une autre solution, comme par exemple de demander a l'utilisateur d'ouvrir le fichier a partir d'une nouvelle fenêtre auquel cas j'aimerais bien aussi connaître la solution...même si je préférerais avoir une réponse a la solution que j'aimerais faire....
Pour résumer si vous avez moyen de solutionner mon soucis j'aimerais beaucoup avoir votre avis, sinon j'aimerais donc une autre solution pour mon problème !
Merci d'avance
PS : j'ai mis mes classes en pièces jointes
EDIT : 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.
EDIT 2 : 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...
Partager