Bonjour,

Je souhaiterais que dans une etiquette de texte s'affiche un lien hypertexte (dans mon programme java) et que lorque l'utilisateur clique dessus, cela ouvre la page dans le navigateur.

Voici moi code actuel qui ne fais pas ce qu'il faut car il ouvre la page dans le programme java (dans l'etiquette de texte) :

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
JEditorPane apropos=new JEditorPane();
		apropos.setEditorKit(new HTMLEditorKit());
		apropos.setEditable(false);
		apropos.setText("<div style='font-family: georgia, prestige, sans-serif ;'>D'après une idée de <a href='http://google.com' target='_blank'>Machin</a>");
 
		 HyperlinkListener hyperlinkListener = new ActivatedHyperlinkListener(this, apropos);
		 apropos.addHyperlinkListener(hyperlinkListener);
 
 
....
 
class ActivatedHyperlinkListener implements HyperlinkListener {
 
	  JFrame frame;
 
	  JEditorPane editorPane;
 
	  public ActivatedHyperlinkListener(JFrame frame, JEditorPane editorPane) {
	    this.frame = frame;
	    this.editorPane = editorPane;
	  }
 
	  public void hyperlinkUpdate(HyperlinkEvent hyperlinkEvent) {
	    HyperlinkEvent.EventType type = hyperlinkEvent.getEventType();
	    final URL url = hyperlinkEvent.getURL();
	    if (type == HyperlinkEvent.EventType.ENTERED) {
	      System.out.println("URL: " + url);
	    } else if (type == HyperlinkEvent.EventType.ACTIVATED) {
	      System.out.println("Activated");
	      Runnable runner = new Runnable() {
	        public void run() {
	          // Retain reference to original
	          Document doc = editorPane.getDocument();
	          try {
	            editorPane.setPage(url);
	          } catch (IOException ioException) {
	            JOptionPane.showMessageDialog(frame,
	                "Error following link", "Invalid link",
	                JOptionPane.ERROR_MESSAGE);
	            editorPane.setDocument(doc);
	          }
	        }
	      };
	      SwingUtilities.invokeLater(runner);
	    }
	  }
	}
Merci de votre aide