titledborder java example
¿Cómo cambiar el puntero del mouse al puntero del dedo en swing? (3)
En html, cuando creamos un hipervínculo y lo señalamos, luego cambia automáticamente a un puntero.
Así que me preguntaba si podemos lograr lo mismo en los cambios de Java. Supongamos que tengo una etiqueta al hacer clic en la cual aparece un nuevo formulario emergente. Pero quiero que cuando el usuario apunta sobre la etiqueta, debe cambiar a puntero, mostrando que algo se abrirá si se hace clic. De esta manera podemos diferenciar Esa etiqueta con etiquetas normales en el formulario supongo :).
Pero, ¿cómo hacer algo como esto?
Como se dijo, querría llamar al método setCursor()
en la JLabel y configurarlo en Cursor.Hand_CURSOR
para promover esto. También puede subrayar el texto para que sea un enlace de aspecto HTML si así lo desea :):
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) {
//
}
}
}
}
}
Referencia:
Puede configurar el cursor de JLabel en Cursor.HAND_CURSOR usando el siguiente código:
JLabel label = new JLabel("http://.com");
label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
La respuesta de Hossein Mobasher es buena y la mía es muy tarde, pero solo quiero agregar que también puede usarla de esta manera a continuación.
JLabel label = new JLabel("http://.com");
label.setCursor(Cursor.HAND);
También funcionará lo he probado en Java 1.8