Как изменить указатель мыши на указатель пальца в качели? - программирование
Подтвердить что ты не робот

Как изменить указатель мыши на указатель пальца в качели?

В html, когда мы создаем гиперссылку и указываем на нее, она автоматически изменяется на указатель пальца.

Так что мне было интересно, можем ли мы добиться этого в java-колебаниях. Предположим, что у меня есть метка при нажатии на которую появляется новая форма. Но я хочу, чтобы, когда пользователь указывает над меткой, она должна измениться на указатель пальца, показывая, что что-то выскочит, если его щелкнуть. Таким образом, мы можем дифференцировать эта метка с нормальными метками на форме, которую я думаю:).

Но как это сделать?

4b9b3361

Ответ 1

Вы можете установить курсор JLabel на Cursor.HAND_CURSOR, используя следующий код:

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

Ответ 2

Как уже говорилось, вы хотите вызвать метод setCursor() в JLabel и установить его в 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) {
                    //
                }
            }
        }
    }
}

Справка:

Ответ 3

Ответ Хоссейна Мобашера хорош, и мой ответ очень поздний, но я просто хочу добавить, что вы также можете использовать его следующим образом.

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

Это также будет работать, я попробовал это в Java 1.8