1
我已經嘗試使用下面的代碼來創建一些進度條圖片:試圖顯示進度條圖標與Java任務欄,但我得到的是一個單一的黑線
public static void makeImage(int percent)
{
BufferedImage img = new BufferedImage(100, 30, BufferedImage.TYPE_INT_ARGB);
Graphics g = img.getGraphics();
g.setColor(Color.LIGHT_GRAY);
g.fillRect(0, 0, 100, 30);
for (int x = 0; x < percent; x++)
{
for (int y = 0; y < img.getHeight(); y++)
{
img.setRGB(x, y, Color.GREEN.darker().getRGB());
}
}
ImgUtility.save("/home/xxx/java/myProj/src/myProj/resources/progressbars/"
+ percent + ".png", img);
}
這就造成了一堆從1.png 100x30圖像100.png,它看起來像這樣:
然後,我試圖在托盤中顯示這些圖像,並逐個循環,以顯示動畫進度條的錯覺(在實際使用中,我想使用這些圖像來顯示正在執行的任務的進度):
Tray tray = Display.getDefault().getSystemTray();
TrayItem trayItem = new TrayItem(tray, SWT.NONE);
for (int p = 1; p <= 100; p++)
{
Image icon = IconLoader.load("progressbars/" + p + ".png");
System.out.println(icon.getBounds()); //always outputs
//Rectangle {0, 0, 100, 30}, showing that the 100x30 images were loaded
//correctly.
trayItem.setImage(icon);
try
{
Thread.sleep(1000);
}
catch (Exception e)
{
e.printStackTrace();
System.exit(0);
}
}
然而,當我運行此代碼,而不是看到任務欄上的完整圖像,我只看到一個垂直的黑色/深綠色的線。
我在Linux Mint上。
我在做什麼錯誤..?
在什麼情況下正在操作托盤圖標運行的代碼?是否有可能阻止UI線程繪製圖標?我不確定,但也許你需要在單獨的線程上執行此操作? –
不是你正在尋找的答案,但作爲一個附註,你可以用g.fillRect(0,0,percent,img.getWidth())代替makeImage中的for循環。 –
@DavidConrad就是這樣..謝謝。隨意發佈答案,我會接受 –