netbeans Java -自定义游标在不同的操作系统中是不同的

5q4ezhmt  于 2022-11-10  发布在  Java
关注(0)|答案(2)|浏览(158)

我用下面代码创建自定义光标:

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中却不是。它的显示增加了,而且很难看。
我应该对我的代码应用什么修复/技巧来修复这个问题?这是常见的问题吗?

cclgggtu

cclgggtu1#

问题是Windows需要32 x32的光标,如果不是的话,它会缩放你的图像。
最简单的解决方案是用透明像素将现有的16 x16光标填充到32 x32;这将在两个平台上工作。
您可以使用

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

以查看是否支持给定的大小。
如需详细信息,请参阅:http://forums.sun.com/thread.jspa?threadID=5424409,它也有一个到MS站点的链接。

xdyibdwo

xdyibdwo2#

可能是模拟的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);
    }
}

相关问题