【问题标题】:Java - custom cursor is different in different operating systemsJava - 自定义光标在不同的操作系统中是不同的
【发布时间】:2021-12-31 02:03:31
【问题描述】:

我用底部代码创建自定义光标:

Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage("C:/Users/Administrator/Desktop/gaea/core/ui/gaeawindow/src/si/xlab/gaea/core/ui/gaeawindow/HandCursor.gif");

// Somewhere in mouse pressed action

public void mousePressed(MouseEvent e)
    {
        Cursor cursor = toolkit.createCustomCursor(imageClose, new Point(12,12), "Hand");
        e.getComponent().setCursor(cursor);
    }

光标在 Mac 上显示应该是这样,但在模拟的 Windows 7 中却不是。它显示增加并且它是丑陋的。

我应该对我的代码应用什么修复/技巧来解决这个问题?这是常见的问题吗?

【问题讨论】:

  • “模拟”?你是说并行桌面还是什么?
  • 是的,我的意思是在 Parallels 中。

标签: java swing netbeans mouse-cursor


【解决方案1】:

问题是 Windows 需要 32x32 光标,如果不是,它会缩放您的图像。 Mac 更灵活。

最简单的解决方案是使用透明像素将现有的 16x16 光标填充为 32x32;然后这将在两个平台上都有效。

你可以使用

Toolkit.getDefaultToolkit().getBestCursorSize(w,h)

查看是否支持给定尺寸。

有关详细信息,请参阅: http://forums.sun.com/thread.jspa?threadID=5424409 其中还有一个指向 MS 网站的链接。

【讨论】:

    【解决方案2】:

    可能是模拟的 Windows 7 找不到图像文件。 您应该将图像文件移动到类路径中,在您的 java 文件旁边,以便您可以使用 getClass().getResource() 加载此文件。

    它应该可以在模拟的 Windows 7 和 Mac 上运行。

        public class CursorTest extends JFrame {
        public CursorTest() {
    
            Toolkit toolkit = Toolkit.getDefaultToolkit();
            URL url = getClass().getResource("/si/xlab/gaea/core/ui/gaeawindow/HandCursor.gif");
    
            Image image = null;
            try {
                image = ImageIO.read(url.openStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            Cursor cursor = toolkit.createCustomCursor(image, new Point(12, 12),
                    "Hand");
            setCursor(cursor);
    
            setSize(new Dimension(200, 200));
            setVisible(true);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 2017-03-19
      • 2014-10-22
      相关资源
      最近更新 更多