Java Custom Cursor有时在MacOS上显示为默认值

时间:2017-12-20 17:04:59

标签: java macos

在下面的代码示例中,光标将更改为放置在“icon / cursor /”上的名为“pointer-measure.png”的32x32图像。

问题是:在MacOS上,如果让鼠标移入和移出框架,有时会显示自定义图像,有时则会显示默认光标。我只在MacOS上观察到这种行为 - 如果我在Windows上运行相同的代码,它每次都会显示自定义光标。

有人有同样的问题吗?是否有解决方法?

public class JavaApplication2 {

public static final Cursor MOVE_CURSOR = getCustomCursor("pointer-measure.png", "bt-drawing", 15, 15);

public static void main(String[] args) {
    JFrame  frame = new JFrame();
    frame.setSize(300, 300);

    JPanel panel = new JPanel();
    panel.setBorder(BorderFactory.createLineBorder(Color.red));
    panel.setCursor(MOVE_CURSOR);

    frame.add(panel);
    frame.setVisible(true);
}

public static Cursor getCustomCursor(String filename, String cursorName, int hotSpotX, int hotSpotY) {
    Toolkit defaultToolkit = Toolkit.getDefaultToolkit();
    ImageIcon icon = new ImageIcon(JavaApplication2.class.getResource("icon/cursor/" + filename));
    Dimension bestCursorSize = defaultToolkit.getBestCursorSize(icon.getIconWidth(), icon.getIconHeight());
    Point hotSpot = new Point((hotSpotX * bestCursorSize.width) / icon.getIconWidth(),
        (hotSpotY * bestCursorSize.height) / icon.getIconHeight());
    return defaultToolkit.createCustomCursor(icon.getImage(), hotSpot, cursorName);
}

}

Obs:我在MacOS Sierra和Windows 10上运行。

0 个答案:

没有答案