Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Componentes / Java / Abrir enlace web desde JLabel con Java

Abrir enlace web desde JLabel con Java

Autor jc mouse jueves, julio 19, 2012

El siguiente código te permite abrir enlaces web desde un JLabel, ademas aprovechando el soporte a etiquetas HTML del componente swing, se utiliza estilos CSS para dar algunos efectos a los enlaces cuando el mouse pase sobre el texto, cuando se realice un click sobre nuestro label, se abrirá la dirección URL que le indiquemos en el navegador predefinido del sistema, si no puede abrir el link, muestra un mensaje de error.

hyperlink

La clase que hace todo lo anteriormente descrito se llamada “JLabelLink.java” y el código es:

import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import javax.swing.JLabel;
/**
 * @web http://www.jc-mouse.net
 * @author Mouse
 */
public class JLabelLink extends JLabel{

    private String text="";
    private String TextLink=null;
    private URI uri;

    public JLabelLink(){
        super();
        this.setCursor(Cursor.getPredefinedCursor( Cursor.HAND_CURSOR ));
        this.setPreferredSize( new Dimension(34,14) );
        this.setVisible(true);
        //Eventos del raton sobre el JLabel
        addMouseListener(new MouseAdapter() {
            @Override
                public void mouseClicked(MouseEvent e) {
                    Abrir_URL(uri);
                }
            @Override
                public void mouseEntered(MouseEvent e) {
                    setText(text,false);
                }
            @Override
                public void mouseExited(MouseEvent e) {
                    setText(text,true); repaint();
                }
        });

    }

    /**
 * Coloca la dirección web
 */
    public void setLink( String link )
    {        
        try {
            uri = new URI(link);
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }

    /**
 * Coloca el texto que contiene el enlace web
 */
    public void setTextLink( String texto )
    {
        this.TextLink = texto;
    }

    /**
 * Se sobreescribe metodo
 */
    @Override
    public void setText( String value ){                
        setText(  value ,false );
    }

    /**
 * Retorna el texto sin las etiquetas HTML
 */
    public String getTextSinFormato(){
        return text;
    }

    /**
 * Da formato al texto para añadir las etiquetas HTML necesarias
 */
    private void setText(String text, boolean inout){
        //Estilo CSS
        String css = "<style type='text/css'>"
                + ".link {text-decoration: none;font-weight: bold;color:#000000;}"
                + ".link_hover{color:rgb(255,0,0);text-decoration:underline;}"
                + "</style>";

        //estilo css segun el mouse este dentro o fuera
        String clase = (inout)? "link":"link_hover";
        //forma el texto HTML
        String html_text = (TextLink!=null)?text.replace(TextLink, "<span class='"+clase+"' >" +TextLink + "</span>"):text;        
        //coloca al padre
        super.setText("<html>"+ css +"<span>"+ html_text + "<span/></html>");

        this.text = text;
    }

    /**
 * Abre enlace web en el navegador
 */
    private void Abrir_URL(URI uri) {
      if (Desktop.isDesktopSupported()) {
          Desktop desktop = Desktop.getDesktop();
          try {
             desktop.browse(uri);
          } catch (IOException e) {
             System.err.println("Error: No se pudo abrir el enlace" + e.getMessage() );
          }
      } else {
          System.err.println("Error: Error de compatibilidad en la plataforma actual. No se puede abrir enlaces web.");
      }
    }

}

Para implementar este JLabel personalizado debemos hacer lo siguiente, creamos una nueva instancia de clase, le damos un tamaño al componente y le agregamos un texto, seguidamente le añadimos el enlace web y opcionalmente, le añadimos la palabra o palabras que aparecerán subrayadas y de un color rojo cuando el puntero del mouse entre dentro el jlabel.

JLabelLink link = new JLabelLink();
link.setSize( 300,120);
link.setText("La vida real no se divide en semestres, la vida real no tendrá largas vacaciones de verano, "
         + "de pascua, de navidad, del patrón del colegio, puentes, etc. en la vida real pocos jefes se "
         + "interesarán en ayudarte a que te encuentres a ti mismo. En la vida real todo eso tendrás que hacerlo "
         + "en tu tiempo libre.");
link.setLink("http://www.google.com.bo");
link.setTextLink("vida real");        
this.add(link);

Para este ejemplo hago uso de una frase de Bill Gates, modificada solo para fines didacticos, la frase original es:

La vida real no se divide en semestres, no tendrá largas vacaciones de verano, de pascua, de navidad, del patrón del colegio, puentes,etc. y pocos jefes se interesarán en ayudarte a que te encuentres a ti mismo. Todo eso tendrás que hacerlo en tu tiempo libre.

Bájate el proyecto del ejemplo en netbeans 6.9

Código Fuente

 Enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Seleccionar y mover shapes en html5

Seleccionar y mover shapes en html5

En este tutorial se hará uso de los eventos de ratón de jquery para desplazar shapes sobre el canvas, para tener una mej...

Ejecutar JAR con parámetros de entrada

Ejecutar JAR con parámetros de entrada

Java nos permite pasar parámetros a una aplicación empaquetada en un *.JAR mediante el MAIN de nuestro programa, pero cl...

Personalización de Componentes Swing Java I

Personalización de Componentes Swing Java I

Hace tiempo pidieron un video tutorial sobre como crear sus propios componentes swing java, lamentablemente debo decir q...

Client REST usando GSON y Volley

Client REST usando GSON y Volley

En este post crearemos un cliente android para consumir un recurso de un REST API utilizando las librerías GSON y Volley...

Rompecabezas con forma irregular

Rompecabezas con forma irregular

En este post vemos una manera de como crear un juego de rompecabezas en java sin el uso de java2d, ademas, las piezas de...

MVC Java y Base de Datos Tutorial

MVC Java y Base de Datos Tutorial

En post pasados [Ejemplo práctico de MVC java Swing con Netbeans, 3 en raya java con MVC y Netbeans , MVC: Modelo, Vista...

14 comentarios en “Abrir enlace web desde JLabel con Java”

  1. ron dice:

    Hola excelente lo que haces me encanta todas las aplicaciones que subes. pero quisiera pedirte que me recomiendes o me digas que libros usaste para aprender tanto java.
    te confieso que me cuesta entender la orientación a objetos, gracias y espero pronta respuesta.
    NovaG8@hotmail.com

    1. Mouse dice:

      pues eso es difícil, hay muchos y muy buenos tutoriales en la web, mal haría al recomendarte uno en específico, debes buscar uno que lo entiendas, no todos explican igual y por ende no todos aprenden de la misma forma

  2. anonimmo dice:

    Que hubo Jc-mouse tengo un problema y no se como hacerlo necesito como hacer un jsplitpane en netbeans una imagen de lo esperado http://htmlimg3.scribdassets.com/6vb4vr2mtc1npsy8/images/55-df199d33ce.jpg espero una pronta respuesta se lo agradezco…

    1. Mouse dice:

      🙂 no te entiendo, quieres añadir una imagen al jsplitpane o quieres crear un desde cero 🙂

  3. Anonimo dice:

    Hola jc-mouse muy buenna su pagina, prodria hacer un tutorial sobre cliente- servidor en java sobre una factura en base de datos… espero pronta respuesta…

    1. Mouse dice:

      tomo nota 🙂 pero por el momento no creo, con mayor seguridad a finales de octubre 🙂

    2. VIANEY VARGAS dice:

      mouse contesta a todo el mundo jajajaj menos a mi jajaj pero bn sigo aprendiendo
      gracias men

      1. Mouse dice:

        o.O

  4. Anonimo dice:

    Amigo estoy esperando el tuto de cliente servidor en java de un sistema de factura…

  5. Anonimo dice:

    Puede o no puede hacer el de cliente servidor en java de un sistema de factura

    1. Mouse dice:

      🙂 por el momento no creo, tal vez mas adelante 🙂

  6. ivan dice:

    una pregunta porfa ese programa esta muy bueno me gustaria saber si desde esa ventana puedo llo actualizar el sitio web ??

  7. ivan dice:

    bueno me gustaria hacer un programa q llame a una pagina web y y la pueda actualizar y zonar como alarma cuando la pagian le agreguen algo es una pagian de comprar pero nose sabe la hora que los colocan y quiero crear como un sistema de alarma para poder saber cuando colocan el producto y poder comprar y no puedo descargar este codigo fuente de este proyecto que muestras ayuda porfa

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

En un post anterior vimos como usar la herramienta XJC del JDK para generar clases java desde esquemas XSD (XML Schema D...

Kali Linux es un sistema operativo de pruebas de intrusión con una gran colección de herramientas forenses y de segurida...

XJC es una herramienta de linea de comandos del compilador de esquemas de JAXB que se puede utilizar para convertir un e...

En este post realizaremos un pequeño ejemplo de validación de archivos XML utilizando el esquema XSD y el lenguaje PHP (...

Android Bolivia

MAUS