java - 在具有一定透明度的 Java 中实现游标

标签 java swing transparency alpha-transparency mouse-cursor

我有一个 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);
}

这是当前的结果:

result

编辑 这个方法似乎跨平台效果不佳,例如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/

相关文章:

java - 当我传递类的变量时,paintComponent 方法不绘制任何东西

java - JTree 上的自定义图标

pdf - imagemagick将具有透明度的pdf转换为jpg

java - 将两个 Jtable 添加到 JScrollPane

java - 公共(public)假期检查器(英国)

java - Mini-Webserver-Mock : java.net.SocketException:连接重置

java - LWJGL透明度

java - 导入 Java 或其他语言,根据给定数据生成流程图

java - 如何优化这种循环呢?

c# - 如何在c#中制作多个图像的透明背景