Java 对于不同的平台,更改LWJGL 3.1中GLFW 3窗口图标的方式不同

Java 对于不同的平台,更改LWJGL 3.1中GLFW 3窗口图标的方式不同,java,lwjgl,glfw,Java,Lwjgl,Glfw,我正在创建一个使用LWJGL 3的游戏引擎。 我正在创建一个名为“FrameManager”的类,希望处理窗口输入(如大小、位置等),但我在许多网站、文档等中查找过,没有找到如何创建一个简单的方法来设置窗口图标。 首先,我找到了一个glfw3方法:glfwSetWindowIcon(frameId,images) 但它在macOS Sierra 1.12上似乎不起作用(我暂时无法在Windows上测试)。 以下是我如何使用此方法: log.debug(" ->


我正在创建一个使用LWJGL 3的游戏引擎。
我正在创建一个名为“FrameManager”的类,希望处理窗口输入(如大小、位置等),但我在许多网站、文档等中查找过,没有找到如何创建一个简单的方法来设置窗口图标。 首先,我找到了一个glfw3方法:
glfwSetWindowIcon(frameId,images)

但它在macOS Sierra 1.12上似乎不起作用(我暂时无法在Windows上测试)。 以下是我如何使用此方法:

                log.debug(" -> Setting Icon...");
                final PNGDecoder decoder = new PNGDecoder(new FileInputStream(iconPath));
                final int iconWidth = decoder.getWidth();
                final int iconHeight = decoder.getHeight();
                final ByteBuffer buffer = createByteBuffer(iconWidth * iconHeight * 4);
                decoder.decode(buffer, iconWidth * 4, PNGDecoder.Format.RGBA);
                buffer.flip();
                final GLFWImage image = malloc();
                image.set(iconWidth, iconHeight, buffer);
                final GLFWImage.Buffer images = malloc(1);
                images.put(0, image);

                glfwSetWindowIcon(frameId, images);

                images.free();
                image.free();
我在窗口创建/显示之前/之后尝试了它,但在macOS Sierra 10.12中没有发生任何事情(没有错误,但没有图标)

所以,我认为它可以在Windows上运行,但不能在Mac上运行


我寻找了一个苹果解决方案,然后找到了两种方法,但都不起作用:(
首先,将其添加到VM启动参数中:
-Xdock:icon=/path/myIcon.png

但什么也没有发生:( 我也试过:

Application.getApplication().setDockIconImage(Image img);
它不会创建图标并中断线程(此时线程被阻塞)

我知道存在应用程序包,但真的没有其他解决方案吗

谢谢你的帮助! 祝您愉快!

根据GLFW图标API不起作用,请参阅API文档中的“备注”

它提到您应该使用bundles图标来设置dock bar图标