Comment changer le pointeur de la souris en pointeur de doigt dans swing?

en html lorsque nous créons un hyperlien et que nous le pointons ,il se transforme automatiquement en pointeur de doigt.

alors je me demandais si on pouvait faire la même chose avec java swings. Supposons que j'ai une étiquette sur le clic qui un nouveau formulaire apparaît.Mais je veux que lorsque l'utilisateur pointe sur l'étiquette,il devrait changer en pointeur de doigt, montrant que quelque chose pop-up si son cliqué.De cette façon, nous pouvons différencier cette étiquette avec des étiquettes normales sur la forme je suppose :).

mais comment faire quelque chose comme cela?

16
demandé sur Abhinav 2012-07-27 15:33:47

2 réponses

Vous pouvez définir le curseur de JLabel à Curseur.MAIN_CURSOR en utilisant le code ci-dessous :

JLabel label = new JLabel("http://stackoverflow.com");
label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
52
répondu Hossein Mobasher 2017-05-01 05:30:02

Comme l'a dit vous voulez appeler le setCursor() méthode sur le JLabel et réglez

import java.awt.Color;
import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.net.URI;
import javax.swing.JLabel;

/**
 *
 * @author ludovicianul
 */
public class URLLabel extends JLabel {

    private String url;

    public URLLabel() {
        this("","");
    }

    public URLLabel(String label, String url) {
        super(label);

        this.url = url;
        setForeground(Color.BLUE.darker());
        setCursor(
                new Cursor(Cursor.HAND_CURSOR));
        addMouseListener(
                new URLOpenAdapter());
    }

    public void setURL(String url) {
        this.url = url;
    }

    //this is used to underline the text
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        g.setColor(Color.blue);

        Insets insets = getInsets();

        int left = insets.left;
        if (getIcon() != null) {
            left += getIcon().getIconWidth() + getIconTextGap();
        }

        g.drawLine(left, getHeight() - 1 - insets.bottom, (int) getPreferredSize().getWidth()
                - insets.right, getHeight() - 1 - insets.bottom);
    }

    private class URLOpenAdapter extends MouseAdapter {

        @Override
        public void mouseClicked(MouseEvent e) {
            if (Desktop.isDesktopSupported()) {
                try {
                    Desktop.getDesktop().browse(new URI(url));
                } catch (Throwable t) {
                    //
                }
            }
        }
    }
}

Référence:

1
répondu David Kroukamp 2012-07-27 11:47:27