2011-01-25 79 views
4

我想为Windows 7上运行的lwjgl进程添加一个任务栏图标。带lwjgl的任务栏图标?

Display.setIcon成功更改窗口顶部的图标,但不会更改任务栏中的图标。

怎么办?

我的代码,类似:

ArrayList byteBuffers = new ArrayList();
byteBuffers.add(ImageHelper.loadImageAsIconImage("stickmanicon32x32.png"));
byteBuffers.add(ImageHelper.loadImageAsIconImage("stickmanicon16x16.png"));
System.out.println("taskbaricon result: " + Display.setIcon(byteBuffers.toArray(new ByteBuffer[]{})));

我尝试添加一个40×40像过,但没有任何变化。

+1

我相信上面的问题是你的toArray调用。您需要分配一个长度为2的ByteBuffer数组来保存2个缓冲区。你正在创建一个空数组:“new ByteBuffer [] {}”应该是“新的ByteBuffer [2]” – thomas88wp 2013-08-26 22:40:21

回答

3

这段代码对我来说工作得很好。不需要额外的库。

ByteBuffer[] list = new ByteBuffer[2]; 
list[0] = createBuffer(ImageIO.read(new File("src/Images/Tests/icon16.png"))); 
list[1] = createBuffer(ImageIO.read(new File("src/Images/Tests/icon32.png"))); 
Display.setIcon(list); 
+2

这看起来和我的代码一样。你在Windows 7上试过这个吗? – 2012-09-29 14:44:12

2

您应该看看J7Goodies提供许多Windows 7功能的Java库。

+2

理想情况下,我想要一个不需要我付钱的解决方案。 – 2012-09-29 14:43:21

2

这就是我在几个小时后搞乱后发现的。

我使用了slick-util lib。

Display.setIcon(new ByteBuffer[] { 
        new ImageIOImageData().imageToByteBuffer(ImageIO.read(new File("res/game/gameIcon.png")), false, false, null), 
        new ImageIOImageData().imageToByteBuffer(ImageIO.read(new File("res/game/gameIcon.png")), false, false, null) 
        });