如何在摇摆中将鼠标指针更改为手指指针?

时间:2012-07-27 11:33:48

标签: java swing mouseover jlabel

在html中,当我们创建超链接并指向它时,它会自动更改为手指指针。

所以我想知道我们能否在Java摇摆中实现同样的目标。 假设我有一个标签,点击一个新表格弹出。但我想当用户指向标签时,它应该更改为手指指针,显示如果点击它会弹出一些东西。这样我们可以区分表格上带有普通标签的标签我猜:)。

但是如何做这样的事情?

4 个答案:

答案 0 :(得分:57)

您可以使用以下代码将JLabel的光标设置为Cursor.HAND_CURSOR

JLabel label = new JLabel("http://stackoverflow.com");
label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

答案 1 :(得分:1)

如上所述,您希望在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) {
                    //
                }
            }
        }
    }
}

<强>参考:

答案 2 :(得分:0)

侯赛因·莫巴希尔  答案是好的,我的答案已经很晚了,但我只想加起来,您也可以像下面这样使用它。

JLabel label = new JLabel("http://stackoverflow.com");
label.setCursor(Cursor.HAND);

我在Java 1.8中尝试过的方法也可以使用

答案 3 :(得分:0)

转到按钮或标签的属性并向下滚动,您会找到一列光标,您可以将其更改为手形或任何您想要的