JLabel hyperlink to open a browser at the correct URL

I need to create a shortcut with Java Swing that you can click and open the default browser on the desktop and redirect it to a specific URL. My code may open the browser but not redirect it to the correct URL (loading the default source page). My test code is:

import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.IOException; import java.net.*; public class LinkTest extends JFrame { public LinkTest() { JPanel p = new JPanel(); JLabel link = new JLabel("Click here"); link.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); link.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() > 0) { if (Desktop.isDesktopSupported()) { Desktop desktop = Desktop.getDesktop(); try { URI uri = new URI("http://www.bbc.co.uk"); desktop.browse(uri); } catch (IOException ex) { ex.printStackTrace(); } catch (URISyntaxException ex) { ex.printStackTrace(); } } } } }); p.add(link); getContentPane().add(BorderLayout.NORTH, p); } public static void main(String[] args) { LinkTest linkTest = new LinkTest(); linkTest.setSize(640,100); linkTest.show(); } } 

How can I open the default browser and redirect it to the correct URL using Java Swing?

+9
java browser swing hyperlink jlabel
Dec 29 '11 at 2:55 a.m.
source share
6 answers

Found a problem: on Ubuntu 12.10 I installed "libgnome2" and now it works fine.

0
Oct 27 '12 at 18:12
source share

Simple, just copy this method into your code with the correct parameters. Do not forget to add the necessary import.

 import java.awt.Cursor; import java.awt.Desktop; import java.awt.EventQueue; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; private void goWebsite(JLabel website, final String url, String text) { website.setText("<html> Website : <a href=\"\">"+text+"</a></html>"); website.setCursor(new Cursor(Cursor.HAND_CURSOR)); website.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { try { Desktop.getDesktop().browse(new URI(url)); } catch (URISyntaxException | IOException ex) { //It looks like there a problem } } }); } 
+15
Sep 03
source share
  public void mouseClicked(MouseEvent e) { if (e.getClickCount() > 0) { if (Desktop.isDesktopSupported()) { try { String osName = System.getProperty("os.name"); String urlPath = "http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html"; if (osName.startsWith("Windows")) Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + urlPath); else { String[] browsers = { "firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape" }; String browser = null; for (int count = 0; count < browsers.length && browser == null; count++) if (Runtime.getRuntime().exec(new String[] { "which", browsers[count] }).waitFor() == 0) browser = browsers[count]; Runtime.getRuntime().exec(new String[] { browser, urlPath }); } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Error in opening browser" + ":\n" + e.getLocalizedMessage()); } } } } }); 
+1
Dec 29 '11 at 15:04
source share

Here is a sample code for what you need.

+1
Dec 29 '11 at 15:04
source share

Your code worked fine for me on a Mac with Safari as the default browser.

What browser do you work in and what OS do you work in?

+1
Dec 29 '11 at 15:11
source share

It seems to work, Here is a great alternative that McDowell should try using JButton,

 public static void main(String[] args) throws URISyntaxException { final URI uri = new URI("http://java.sun.com"); class OpenUrlAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { open(uri); } } JFrame frame = new JFrame("Links"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(100, 400); Container container = frame.getContentPane(); container.setLayout(new GridBagLayout()); JButton button = new JButton(); button.setText("<HTML>Click the <FONT color=\"#000099\"><U>link</U></FONT>" + " to go to the Java website.</HTML>"); button.setHorizontalAlignment(SwingConstants.LEFT); button.setBorderPainted(false); button.setOpaque(false); button.setBackground(Color.WHITE); button.setToolTipText(uri.toString()); button.addActionListener(new OpenUrlAction()); container.add(button); frame.setVisible(true); } private static void open(URI uri) { if (Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(uri); } catch (IOException e) { /* TODO: error handling */ } } else { /* TODO: error handling */ } } 
+1
Dec 29 2018-11-12T00:
source share



All Articles