En html, lorsque nous créons un lien hypertexte et le pointons dessus, il se change automatiquement en pointeur de doigt.
Je me demandais donc si nous pouvions atteindre le même résultat avec Java. Supposons que j'ai une étiquette en cliquant sur laquelle un nouveau formulaire apparaît. Mais je veux que lorsque l'utilisateur pointe sur l'étiquette, il se change en pointeur de doigt, ce qui indique que quelque chose apparaîtra si l'on clique dessus. De cette manière, nous pouvons différencier cette étiquette avec des étiquettes normales sur le formulaire je suppose :).
Mais comment faire quelque chose comme ça?
Vous pouvez définir le curseur de JLabel sur Cursor.HAND_CURSOR en utilisant le code ci-dessous:
JLabel label = new JLabel("http://stackoverflow.com");
label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
Comme vous l'avez dit, vous souhaitez appeler la méthode setCursor()
sur le JLabel et la définir sur Cursor.Hand_CURSOR
. Vous pouvez également souligner le texte pour en faire un lien HTML si vous le souhaitez :):
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:
Hossein Mobasher Réponse est bonne et la mienne réponse est très en retard mais je veux juste ajouter que vous pouvez également l'utiliser comme ceci ci-dessous.
JLabel label = new JLabel("http://stackoverflow.com");
label.setCursor(Cursor.HAND);
Cela fonctionnera aussi je l'ai essayé en Java 1.8