我有一个 35x40 像素。 png 图像我想在 Swing 应用程序中用作自定义光标。
该图像有发光,因此包含 alpha 透明度值。问题是,当我尝试使用使用 Toolkit
的传统方法来生成自定义光标时,我在应该是 alpha 透明度值的地方得到了黑色像素。
这是我用于光标的图像: https://dl.dropbox.com/u/1186703/cursor.png
这是我的代码:
public static void main(String[] args) throws IOException {
new Sandbox().gui();
}
private Cursor cursor;
private Toolkit kit;
private Image cursorImage;
public void gui() {
kit = Toolkit.getDefaultToolkit();
cursorImage = kit.createImage(getClass().getResource(
"/aurora/V1/resources/cursor.png"));
cursor = Toolkit.getDefaultToolkit().createCustomCursor(
cursorImage, new Point(0, 0), "CustomCursor");
setSize(800, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
setCursor(cursor);
}
这是当前的结果:
编辑 这个方法似乎跨平台效果不佳,例如Windows LAF不支持半透明。因此,我正在寻找任何解决方案来让它在 Windows 上运行,假设这个实现在 Mac OSX 上运行,我可以根据应用程序运行的操作系统在代码中指定要使用的实现。
最佳答案
您的代码和光标图像实际上在 MacOS X 10.7.5 (jdk 1.6.0_31) 上产生了具有半透明蓝色边框的预期结果。但我确实注意到 this answer 中有一条关闭评论表示默认 Windows 外观不支持部分透明度。
关于java - 在具有一定透明度的 Java 中实现游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13326256/