Java SE 6 為 AWT/Swing 注入多項實用新特性,顯著提升桌面應用用戶體驗:啟動畫面、系統托盤集成、標準輸入對話框、GIF 圖片讀寫支持等。
無需編寫代碼即可顯示啟動圖片,支持運行時動態繪製進度信息。
java -splash:splash.gif MainClassMANIFEST.MF 添加 SplashScreen-Image: splash.gif,執行 java -jar App.jar。SplashScreen splash = SplashScreen.getSplashScreen();
Graphics g = splash.createGraphics();
String[] msgs = {"正在初始化 API...", "正在連接數據庫...", "加載配置..."};
for (int i = 0; i < msgs.length; i++) {
g.setColor(Color.BLACK);
g.drawString(msgs[i], 350, 170 + i * 15);
splash.update();
Thread.sleep(1000 * (i + 1));
}
// 主窗口顯示時自動關閉,或調用 splash.close() 強制關閉
通過 java.awt.SystemTray 實現跨平台托盤圖標、彈出菜單、消息通知。
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
Image img = Toolkit.getDefaultToolkit().getImage("tray.gif");
PopupMenu popup = new PopupMenu();
popup.add(new MenuItem("打開主界面"));
popup.add(new MenuItem("退出"));
TrayIcon icon = new TrayIcon(img, "應用提示", popup);
tray.add(icon);
// 顯示不同類型通知
icon.displayMessage("警告", "磁盤空間不足!", TrayIcon.MessageType.WARNING);
icon.displayMessage("錯誤", "數據庫連接失敗!", TrayIcon.MessageType.ERROR);
icon.displayMessage("信息", "新郵件到達", TrayIcon.MessageType.INFO);
}
可添加多個托盤圖標,每個圖標需獨立創建 TrayIcon 實例。
Java SE 6 提供內置輸入對話框,支持兩種模態類型:
APPLICATION_MODAL:阻塞整個應用程序。DOCUMENT_MODAL:僅阻塞父窗口,其他窗口可交互。JOptionPane pane = new JOptionPane("請輸入:", JOptionPane.QUESTION_MESSAGE);
pane.setWantsInput(true);
JDialog dialog = pane.createDialog(parentFrame, "輸入標題");
dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
dialog.setVisible(true);
String input = (String) pane.getInputValue();
GIF 專利過期後,Java SE 6 內置 GIF 讀寫支持。通過 ImageIO 輕松實現格式轉換:
File input = new File("photo.jpg");
BufferedImage image = ImageIO.read(input);
File output = new File("photo.gif");
ImageIO.write(image, "GIF", output);
// 查看支持格式
System.out.println(Arrays.toString(ImageIO.getWriterFormatNames()));
// 輸出: [BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif]
Java SE 6 的 GUI 增強雖非革命性,但解決了桌面應用開發中的實際痛點(啟動等待反饋、後台駐留、簡單輸入交互、圖片格式兼容),讓 Java 桌面應用更接近原生體驗。