大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: 启动画面与工具列图示 - Java SE 6

有些视窗程序在启动时,会有个启动画面,在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.txt
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实例,如此就可以加入一个系 统工具列图示,例如:

  • SystemTrayDemo.java
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实例给它,例如:

  • SystemTrayDemo2.java
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);