簡體   English   中英

如何將鼠標指針更改為擺動中的手指指針?

[英]How to change the mouse pointer to finger pointer in swing?

在 html 中,當我們創建一個超鏈接並指向它時,它會自動更改為手指指針。

所以我想知道我們能否在 java swings 中實現同樣的效果。 假設我有一個點擊時會彈出一個新表單的標簽。但是我希望當用戶指向標簽時它應該變成手指指針,表明如果點擊它會彈出一些東西。通過這種方式我們可以區分我猜是表單上帶有普通標簽的標簽:)。

但是如何做這樣的事情呢?

您可以使用以下代碼將 JLabel 的光標設置為Cursor.HAND_CURSOR

JLabel label = new JLabel("https://stackoverflow.com");
label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_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) {
                    //
                }
            }
        }
    }
}

參考:

轉到按鈕或標簽的屬性並向下滾動,您將找到一列光標,您可以將其更改為手或任何您想要的

Hossein Mobasher 的回答很好,我的回答很晚,但我只想加起來,你也可以像下面這樣使用它。

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

它也可以工作,我在 Java 1.8 中嘗試過

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM