有些视窗程序在启动时,会有个启动画面,在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);
|