Si queremos añadir un enlace web a una aplicación en java, podemos hacer uso de botones o etiquetas, incluso se puede añadir hipervinculos a todo tipo de contenedor, basta con hacer uso de Desktop y su método browse.
La siguiente clase se extiende de un JLabel para implementar un hipervinculo
import java.awt.Cursor; import java.awt.Desktop; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.net.URI; import java.net.URISyntaxException; import javax.swing.JLabel; /** * @web https://www.jc-mouse.net/ * @author Mouse */ public class URLabel extends JLabel implements MouseListener { private URI url; /** * Constructor de clase */ public URLabel(){ //enlace por default try { url = new URI("http://www.google.com.bo"); } catch (URISyntaxException ex) {} //propiedades de JLabel this.setText("URLabel"); this.setToolTipText( url.toString() ); this.setSize(34, 18); this.setVisible(true); this.setCursor(new Cursor(Cursor.HAND_CURSOR)); this.addMouseListener(this); } /** * Metodo para asignar una direccion web * @param url URL de pagina web */ public void setURL( String url ) { try { this.url = new URI(url); this.setToolTipText( url ); } catch (URISyntaxException ex) { System.err.println( ex.getMessage() ); } } /** * Retorna la direccion web que este asignado al objeto * @return String Direccion URL */ public String getURL() { return this.url.toString(); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Rectangle r; r = g.getClipBounds(); g.drawLine(0, r.height - getFontMetrics(getFont()).getDescent(), getFontMetrics(getFont()) .stringWidth(getText()), r.height - getFontMetrics(getFont()).getDescent()); } /** * Cuando se realice un clic sobre el componente JLabel, se abre el enlace en el navegador * predefinido del sistema operativo */ @Override public void mouseClicked(MouseEvent e) { Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null; if ( desktop != null && desktop.isSupported(Desktop.Action.BROWSE) ) { try { desktop.browse( url ); } catch ( Exception ex ) { System.err.println( ex.getMessage() ); } } } @Override public void mousePressed(MouseEvent e) {} @Override public void mouseReleased(MouseEvent e) {} @Override public void mouseEntered(MouseEvent e) {} @Override public void mouseExited(MouseEvent e) {} }//--> fin clase
De esta manera, podemos utilizar el nuevo JLabel las veces que sea necesario
Implementando el JLabel con hipervinculo tenemos:
URLabel label = new URLabel(); label.setURL("https://www.jc-mouse.net"); label.setText("Visita mi Web"); label.setLocation(50, 100); this.add(label);
o.O
Hola, en este oportunidad dejo a disposición un formulario de logueo que se me ocurrió de repente creo inspirado en las[...]
En el vertiginoso mundo del desarrollo de software, mantenerse actualizado y eficiente no es solo una ventaja, sino una[...]
¿Qué es SCRUM? SCRUM es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como pu[...]
La Inteligencia Artificial (AI – Artificial Intelligence) estará presente en casi cada aspecto de nuestra vida en[...]
En este post dejo el código fuente de un blog en PHP desarrollado siguiendo el patrón de diseño MVC (Modelo, Vista y Con[...]
En este post te enseñamos a utilizar SCRCPY, esta es un aplicación de duplicación de pantalla gratuita y de código abier[...]