Bonjour,
voici mon interrogation, j'ai développé une application de gestion de radio et de connexion à ces dernières grace a un getRuntime.exec qui lance vlc ( par exemple ) avec la radio choisie dans une JList.
J'ai donc placé un listener sur la list pour que lorsque l'utilisateur clic sur un item le processus se lance ( injection de l'url + lancement du lecteur multimedia ). Mais en placant un println en guise de test d'écoute, l'opération s'effectue 2 fois. Ce que je souhaite réparer, car doubler le processus est inutile.
Voici le code concerné :
Le listener de la JList:
Je souhaiterai que le listener accède directement à cette classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 listeRadio.addListSelectionListener(new ListSelectionListener(){ @Override public void valueChanged(ListSelectionEvent arg0) { // TODO Auto-generated method stub System.out.println("item choisi"); } });
Et pour terminer le processus, la methode de connexion, qui lit l'item choisi et le place en paramètre ( chaque item correspond a une url (logique) et est injecté grace au runtime.getRuntime.exec() ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class PrintListener implements ActionListener { public void actionPerformed(ActionEvent e) { int selected[] = booklist.getSelectedIndices(); System.out.println("Selected Elements: "); for (int i = 0; i < selected.length; i++) { BookEntry element = (BookEntry) booklist.getModel() .getElementAt(selected[i]); System.out.println(" " + element.label()); } } }
Je pense qu'il est possible d'optimiser tout ça, mais c'est un projet d'étude alors il ne faut pas que cela soit trop parfait
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 public void fonctionConnexion() { int selected[] = booklist.getSelectedIndices(); for(i=0; i<selected.length; i++) { BookEntry element = (BookEntry) booklist.getModel().getElementAt(i); radio = element.label(); System.out.println("élément choisi : "+radio); } try { Process exec = Runtime.getRuntime().exec(new String[] {chemin, radio }); } catch (IOException aIOException) { JOptionPane.showMessageDialog(null, aIOException.getMessage(), "Erreur", JOptionPane.ERROR_MESSAGE); } } }
Si vous avez besoin de plus d'informations, je reste à votre écoute.
Merci
Partager