2011-01-25 74 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) 
        });