【发布时间】:2012-07-27 11:33:47
【问题描述】:
在 html 中,当我们创建一个超链接并指向它时,它会自动变为手指指针。
所以我想知道我们能否在 java swings 中实现同样的效果。 假设我有一个标签点击它会弹出一个新表单。但是我希望当用户指向标签时它应该变成手指指针,表明如果点击它会弹出一些东西。这样我们可以区分我猜表格上带有普通标签的那个标签:)。
但是如何做这样的事情呢?
【问题讨论】:
标签: java swing mouseover jlabel
在 html 中,当我们创建一个超链接并指向它时,它会自动变为手指指针。
所以我想知道我们能否在 java swings 中实现同样的效果。 假设我有一个标签点击它会弹出一个新表单。但是我希望当用户指向标签时它应该变成手指指针,表明如果点击它会弹出一些东西。这样我们可以区分我猜表格上带有普通标签的那个标签:)。
但是如何做这样的事情呢?
【问题讨论】:
标签: java swing mouseover jlabel
您可以使用以下代码将 JLabel 的光标设置为Cursor.HAND_CURSOR:
JLabel label = new JLabel("https://stackoverflow.com");
label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
【讨论】:
Cursor 对象,前提是它之前已创建。
如前所述,您希望在 JLabel 上调用 setCursor() 方法并将其设置为 Cursor.Hand_CURSOR 以进一步实现此目的,您还可以在文本下划线以使其成为类似于 HTML 的链接:):
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) {
//
}
}
}
}
}
参考:
【讨论】:
JLabel mylabel=new JLabel("<html><u>Click here</u></html>"); mylabel.setForeground(Color.BLUE.darker());
转到按钮或标签的属性并向下滚动,您会找到一列光标,您可以将其更改为手形或您想要的任何内容
【讨论】:
侯赛因·莫巴舍 答案很好,我的答案很晚,但我只想加起来,你也可以像下面这样使用它。
JLabel label = new JLabel("http://stackoverflow.com");
label.setCursor(Cursor.HAND);
我已经在 Java 1.8 中尝试过它也可以工作
【讨论】:
ButtonName.SetCursor(new Cursor(12)); 这个绝对有效!
【讨论】: