JButton默认光标

Mar*_*tin 5 java swing jbutton

有没有办法设置JButton组件的默认光标?

这是如何设置一个光标JButton:

JButton btn = new JButton("Click me");
btn.setCursor(new Cursor(Cursor.HAND_CURSOR));
Run Code Online (Sandbox Code Playgroud)

根据lookAndFeel Nimbus的默认值,没有像" Button.cursor " 这样的属性.

我想设置一次默认光标,这样当鼠标光标移动时,应用程序中的所有JButton都有相同的手形光标.

alw*_*arn 2

您可以拥有一个custom button扩展JButton并使用它。就像是 :

MyCustomJButton.java

import java.awt.Cursor;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JButton;

@SuppressWarnings("serial")
public class MyCustomJButton extends JButton implements MouseListener
{

    private Cursor defaultCursor;
    private Cursor handCursor;

    public MyCustomJButton()
    {
        super();

        init();
    }

    public MyCustomJButton(Action a)
    {
        super(a);

        init();
    }

    public MyCustomJButton(Icon icon)
    {
        super(icon);

        init();
    }

    public MyCustomJButton(String text, Icon icon)
    {
        super(text, icon);

        init();
    }

    public MyCustomJButton(String text)
    {
        super(text);

        init();
    }

    @Override
    public void mouseClicked(MouseEvent e)
    {

    }

    @Override
    public void mousePressed(MouseEvent e)
    {

    }

    @Override
    public void mouseReleased(MouseEvent e)
    {

    }

    @Override
    public void mouseEntered(MouseEvent e)
    {
        this.setCursor(handCursor);
    }

    @Override
    public void mouseExited(MouseEvent e)
    {
        this.setCursor(defaultCursor);
    }

    private void init()
    {
        defaultCursor = this.getCursor();
        handCursor = new Cursor(Cursor.HAND_CURSOR);

        addMouseListener(this);
    }

}
Run Code Online (Sandbox Code Playgroud)

一旦您实现了自己的自定义按钮,您就可以像实例化JButton.

MyCustomJButton myButton = new MyCustomJButton("My Button");
Run Code Online (Sandbox Code Playgroud)