我使用底部代码创建自定义光标:
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中它不是。它显示出增加而且很难看。
我应该将哪些修复/技巧应用于我的代码来修复此问题?这是常见的问题吗?
答案 0 :(得分:1)
问题是Windows需要32x32光标,如果不是,则会缩放图像。 Mac更灵活。
最简单的解决方案是将现有的16x16光标用透明像素填充到32x32;这将适用于两个平台。
您可以使用
Toolkit.getDefaultToolkit().getBestCursorSize(w,h)
查看是否支持给定尺寸。
有关详细信息,请参阅: http://forums.sun.com/thread.jspa?threadID=5424409 它还有一个到MS站点的链接。
答案 1 :(得分:0)
可能模拟的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);
}
}