Bonsoir à tous,
Donc me revoilà, cette fois ci je sollicite votre aide pour créer un lien sur un bouton qui renverrai sur une URL...
Je souhaiterais utiliser BrowserControl, qu'en pensez-vous ?
Merci
Seb
Version imprimable
Bonsoir à tous,
Donc me revoilà, cette fois ci je sollicite votre aide pour créer un lien sur un bouton qui renverrai sur une URL...
Je souhaiterais utiliser BrowserControl, qu'en pensez-vous ?
Merci
Seb
Hein ? Quoi ? Qui ? Ou ?
Plus d'info peut-être ? Quel framework graphique et d’où sort de BrowserControl ?
Bonsoir,
je souhaite créer un lien sur un bouton "cliquable"par exemple dans une JFrame avec un JButton..
Merci,
Seb
Salut,
Je suppose que tu veux parler d'afficher une ressource correspondant à une URL, comme une page web par exemple.
Tu peux faire ça dans un navigateur externe (le navigateur par défaut) via la classe Desktop. Tu peux également afficher dans un navigateur interne (un composant Java). En Swing, le composant est assez vieux et ne supporte pas grand chose de récent, donc à éviter, sauf ressource simple (image, page web html3/css1, pas de JavaScript), Il y a un composant SWT qui a été intégré en Swing via la bibliothèque DJNative, mais c'est assez lourd (bibliothèque spécifique à l'OS (native)). Reste la solution JavaFX, avec SwingSimpleBrowser ou un WebView dans un JFXPanel.).
Bonjour Joel,
Oui je pense que la class desktop avec la method browse devrais le faire tu en pense quoi ?
je vais faire quelques essais et si c'est ok j'expliquerai ce que j'ai fait et je passerais en RESOLU..
Merci,
Seb
Bah, ça c'est toi qui vois si ça te convient pour ton programme. De manière générale, ça dépend de ce qu'on veut faire : est-ce juste pour afficher un site web par exemple, ou est-ce que ça a plus de sens d'être intégré dans l'interface, ou est-ce qu'il y a besoin d'une interaction ou d'un retour avec l'application.
En faite il y aura juste besoin d'emmener les personnes sur la page internet concernée sans plus et sans retour au programme..
Donc Desktop.getDesktop().browse(uri) convient très bien. Attention, toutefois, ce n'est pas supporté par tous les environnements (Tester Desktop.isDesktopSupported()).
Bonjour Joel,
Voila ou j'en suis, ça fonctionne,
maintenant je réfléchie comment le lier à mon bouton, si tu as une piste je suis preneur..Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.awt.Desktop; import java.net.*; import java.io.IOException; public class Launch { public static void main(String[] args) throws IOException { if( Desktop.isDesktopSupported() ) { new Thread(() -> { try { Desktop.getDesktop().browse( new URI( "http://google.fr" ) ); } catch (IOException | URISyntaxException e1) { e1.printStackTrace(); } }).start(); } } }
Merci,
Seb
Déjà ton thread ne sert à rien. Ensuite, si tu entends par "lier à ton bouton" faire que "l'action de ton bouton déclenche le lien", il faut simplement écouter les déclenchements d'actions du bouton, ce qui se fait par l'enregistrement d'une instance d'ActionListener sur le bouton. Ce qui implique déjà d'avoir un bouton, et, donc, une GUI (au moins une fenêtre).
Voici un petit exemple :
Code:
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 import java.awt.BorderLayout; import java.awt.Desktop; import java.awt.FlowLayout; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.stream.Stream; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; public class DemoDesktopURI { public static void main(String[] args) { if ( (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) ) { // si l'action BROWSE est supportée... JFrame frame = new JFrame("Démo"); // Je crée une fenêtre frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // je prépare une liste d'URI que je pourrais choisir... URI[] uris = Stream.of( "https://java.developpez.com/", "https://www.developpez.net/forums/f6/java/", "https://www.developpez.net/forums/", "https://www.developpez.net" ) .map(uri -> { try { return new URI(uri); } catch (URISyntaxException e) { throw new RuntimeException(e); } }) .toArray(URI[]::new); // ... dans une liste dans ma fenêtre JList<URI> list = new JList<>(uris); // je crée un bouton JButton button = new JButton("Voir dans le navigateur..."); // j'enregistre un écouteur d'événements de type Action sur le bouton button.addActionListener(e-> { try { Desktop.getDesktop().browse(list.getSelectedValue()); // j'ouvre l'URI sélectionnée dans la liste par le navigateur par défaut } catch (IOException e1) { JOptionPane.showMessageDialog(frame, "Impossible de voir ce site :\n"+list.getSelectedValue()); } }); // ça c'est juste pour que mon bouton soit centré JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); buttonPanel.add(button); // je mets la liste au centre la frame, via un scrollpane, au cas où la frame serait trop petite pour tout voir frame.add(new JScrollPane(list)); // je mets le bouton en bas de la fenêtre, via le panel de centrage frame.add(buttonPanel,BorderLayout.SOUTH); frame.pack(); // dimensionnement automatique de la fenêtre frame.setLocationRelativeTo(null); // centrage automatique de la fenêtre par rapport à l'écran frame.setVisible(true); // affichage de la fenêtre } else { // si Desktop ou Desktop.browse() ne sont pas supportés, alors j'affiche un message d'information JOptionPane.showMessageDialog(null, "Désolé, fonction non supportée..."); } } }
Super exemple !
J'en demandais pas tant, mille mercis !
Seb