Comment créer un lien hypertexte en Java Swing

Dans ce tutoriel nous allons découvrir comment créer un lien hypertexte en utilisant le composant JLabel, car Swing n’a pas de composants intégrés pouvant afficher des liens hypertexte.

Tout d’abord, créez un JLabel comme d’habitude comme ceci:

JLabel lien = new JLabel("www.waytolearnx.com");

Définissez la couleur de votre texte comme un lien hypertexte standard (bleu):

lien.setForeground(Color.BLUE.darker());

Pour que le curseur de la souris se transforme en une icône de « Poignée De Main » lorsque l’utilisateur déplace la souris sur l’étiquette, mettez son curseur comme suit:

lien.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

 
 
Et pour rendre l’étiquette cliquable, ajoutez un listener de souris au JLabel:

lien.addMouseListener(new MouseAdapter() 
{ 
    @Override
    public void mouseClicked(MouseEvent e) {
        // l'utilisateur a cliqué sur l'étiquette
    }
 
    @Override
    public void mouseEntered(MouseEvent e) {
        // la souris est entrée dans l'étiquette
    }
 
    @Override
    public void mouseExited(MouseEvent e) {
        // la souris a quitté l'étiquette
    }
});

Nous redéfinissons la méthode mouseClicked() pour gérer l’événement dans lequel l’utilisateur clique sur le lien hypertexte. Et dans cette méthode, nous pouvons utiliser la classe Desktop pour ouvrir le lien hypertexte associé, par exemple:

@Override
public void mouseClicked(MouseEvent e) {
    try
    {
        Desktop.getDesktop().browse(new URI("https://waytolearnx.com/"));
    } 
    catch (URISyntaxException e) 
    {
        e.printStackTrace();
    }
}

Le système d’exploitation ouvrira un programme approprié qui s’associe à l’URL, généralement un navigateur si le lien est une URL d’un site Web.

Pour souligner le texte lorsque l’utilisateur déplace la souris sur le lien, nous pouvons définir le code HTML du texte avec la balise <a>. Vous pouvez donc redéfinir la méthode mouseEntered() comme ceci:

lien.setText("www.waytolearnx.com");

Et lorsque la souris est sortie, remettez le texte à l’original:

lien.setText("www.waytolearnx.com");

 
 

Exemple complet:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

public class Link extends JFrame 
{
    private String str = "www.waytolearnx.com";
    private JLabel lien = new JLabel(str);
 
    public Link() throws HeadlessException 
    {
        super();
        setTitle("www.waytolearnx.com");
 
        lien.setForeground(Color.BLUE.darker());
        lien.setCursor(new Cursor(Cursor.HAND_CURSOR));
 
        lien.addMouseListener(new MouseAdapter() 
        {
            @Override
            public void mouseClicked(MouseEvent e) {
                try 
                {
                    Desktop.getDesktop().browse(new URI("https://waytolearnx.com/"));
                } 
                catch (IOException | URISyntaxException e1) 
                {
                    e1.printStackTrace();
                }
            }
            @Override
            public void mouseExited(MouseEvent e) {
                lien.setText(str);
            }
            @Override
            public void mouseEntered(MouseEvent e) {
                lien.setText("" + str + "");
            }
        });
 
        setLayout(new FlowLayout());
        getContentPane().add(lien);
 
        setSize(300, 200);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
 
    public static void main(String[] args) 
    {
        SwingUtilities.invokeLater(new Runnable() 
        {
            @Override
            public void run() 
            {
                new Link().setVisible(true);;
            }
        });
    }
}

Sortie:


 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *