有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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


我正在创建一个与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);

它不会创建图标并中断线程(此时线程被阻塞)

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

谢谢你的帮助! 祝你今天愉快


共 (1) 个答案

  1. # 1 楼答案

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

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