22

HTMLでは、ハイパーリンクを作成してその上を指すと、自動的にフィンガーポインターに変わります。

だから私はJavaスイングで同じことを達成できるのだろうかと思っていました。クリックすると新しいフォームがポップアップするラベルがあるとしますが、ユーザーがラベルをポイントすると、指のポインターに変わり、クリックすると何かがポップアップすることを示します。このようにして、区別することができます。そのラベルは、私が推測するフォームに通常のラベルが付いています:)。

しかし、このようなことを行う方法は?

4

5 に答える 5

67

以下のコードを使用して、JLabelのカーソルをCursor.HAND_CURSORに設定できます。

JLabel label = new JLabel("https://stackoverflow.com");
label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
于 2012-07-27T11:38:02.837 に答える
1

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) {
                    //
                }
            }
        }
    }
}

参照:

于 2012-07-27T11:47:27.497 に答える
1

ボタンまたはラベルのプロパティに移動し、下にスクロールすると、カーソルの列が表示され、手または好きなものに変更できます。

于 2021-03-09T08:21:37.000 に答える
0

Hossein Mobasherの 回答は適切で、私の回答は非常に遅いですが、合計すると、以下のように使用することもできます。

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

Java1.8で試したところも動作します

于 2019-01-30T07:37:46.710 に答える
0

ButtonName.SetCursor(new Cursor(12)); これは間違いなく動作します!

于 2022-02-27T12:53:01.547 に答える