有些視窗程式在啟動時,會有個啟動畫面,在Java SE 6之前,您要自己實作才可以擁有這個功能,現在您可以直接在使用"java"程式執行程式時下達"-splash"引數指定啟動畫面的圖片,就可以擁有這個功能,例如若執行 製作 Executable JAR 所製作出來的Executable Jar檔時,可以如下指定圖片:
java -splash:caterpillar.jpg -jar JNotePad.jar
|
其中caterpillar.jpg是啟動畫面的圖片,支援的圖片可以是JPG、GIF或PNG,GIF若有動畫效果則可以呈現出來。
您也可以在製作Executable
JAR檔案時,於manifest檔案中指定"SplashScreen-Image"為啟動畫面的圖片,並在使用jar程式進行包裝時一併包裝圖片,如
此啟動JAR檔案時,就會自動展現啟動畫面,一個manifest檔案的寫法如下所示:
Manifest-Version: 1.0 Main-Class: onlyfun.caterpillar.JNotePad SplashScreen-Image: caterpillar.jpg
如果您對於啟動畫面更進一步的控制感興趣,例如在不同的啟動階段顯示不同的圖片,或者是在啟動圖片上顯示進度列,則可以看看java.awt. SplashScreen的API文件說明。
在Java SE
6中加入了系統工具列圖示的支援,您可以使用SystemTray類別的isSupported()方法,測試看看目前的系統是否支援系統工具列圖示,如
果支援的話,可以使用getSystemTray()取得SystemTray實例,使用add()方法加入TrayIcon實例,如此就可以加入一個系
統工具列圖示,例如:
package onlyfun.caterpillar;
import java.awt.*;
public class SystemTrayDemo { public static void main(String[] args) { if(SystemTray.isSupported()) { SystemTray tray = SystemTray.getSystemTray(); Image image = Toolkit.getDefaultToolkit() .getImage("musical_note_smile.gif"); TrayIcon trayIcon = new TrayIcon(image, "JNotePad 1.0"); try { tray.add(trayIcon); } catch (AWTException e) { System.err.println("無法加入系統工具列圖示"); e.printStackTrace(); } } else { System.err.println("無法取得系統工具列"); } } }
一個執行的結果畫面如下所示:

如果想在系統工具列圖示上按右鍵時,可以出現蹦現視窗,則可以在建構TrayIcon實例時,指定一個PopupMenu實例給它,例如:
package onlyfun.caterpillar;
import java.awt.*; import javax.swing.*;
public class SystemTrayDemo2 { public static void main(String[] args) { if(SystemTray.isSupported()) { SystemTray tray = SystemTray.getSystemTray(); Image image = Toolkit.getDefaultToolkit() .getImage("musical_note_smile.gif"); PopupMenu popup = new PopupMenu(); MenuItem item = new MenuItem("開啟JNotePad 1.0"); popup.add(item); TrayIcon trayIcon = new TrayIcon(image, "JNotePad 1.0", popup); try { tray.add(trayIcon); } catch (AWTException e) { System.err.println("無法加入系統工具列圖示"); e.printStackTrace(); } } else { System.err.println("無法取得系統工具列"); }工具列圖示 } }
執行以上程式,並在出現的圖示上按滑鼠右鍵,將會出現以下的畫面:

如果打算在系統工具列圖示上主動顯示訊息,則可以使用TrayIcon的displayMessage()方法,例如:
trayIcon.displayMessage("哈囉", "該休息了嗎?",
TrayIcon.MessageType.WARNING);
TrayIcon可以顯示的MessageType包括有NONE、INFO、WARNING及ERROR,分別會顯示不同的圖示,上面這段程式片段執行結果畫面如下所示:

如果要移除系統工具列中的圖示,則可以使用SystemTray實例的remove()方法,指定要移除的圖示,例如:
tray.remove(trayIcon);
|