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?
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));
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: