Java是一種非常強大的程式設計語言,但Java的GUI能力一直是它的軟肋。雖然Java提供2種圖形解決方案,AWT和Swing。但這2種圖形庫的功能十分有限,使用它們並不能帶來更多的使用者體驗。而且AWT和Swing的更新速度很慢。一直到Java SE 5也沒什麼明顯的變化。幸好Java SE 6終於為它們增加了更強大的功能。有了這些功能,使用AWT和Swing設計的使用者介面可以更貼近使用者。為了使讀者能夠更早地體驗Java SE 6 GUI的美麗,本文將就Java SE 6 GUI提供的主要功能進行討論。
顯示啟動介面
現在很多商業和非商業軟體在啟動時都必須初始化,有時初始化的時間會很長,如photoshop、flash等,為了讓使用者有耐心繼續等待,不要誤以為死器了,這些軟體在初始化之前總是顯示一個圖形介面來告訴使用者軟體正在做什麼。如圖1是Flash8在啟動時的初始化介面。
圖1 Flash8的啟動介面
當我們在設計軟體時可能也需要這樣一個介面。當然,這在Java SE的早期版本中也可以做到,但比較費勁,基本的實現是將一個圖形放到表單上,然後先顯示這個,這需要編寫一定的代碼,而Java SE 6提供了一個更簡單的方法,可以不添加一行代碼,而且在介面要改變時還不需要重新編譯來源程式。讓我們先看一個簡單的例子。
import javax.swing.*;
import java.awt.*;
public class TestSplash
{
public static void main(String args[])
{
try
{
// 為了讓啟動介面多顯示3秒,
// 如果是正常的程式,這裡應該時初始化代碼
Thread.sleep(3000);
JFrame frame = new JFrame("Java SE 6 啟動介面示範");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("我的標籤", JLabel.CENTER);
frame.add(label, BorderLayout.CENTER);
frame.setSize(300, 95);
frame.setVisible(true);
}
catch (InterruptedException e)
{}
}
}
上面的程式是一個非常簡單的介面示範程式,它的介面如圖2所示。
圖2
如果使用java TestSplash直接運行上面的程式,將立刻顯示如圖2的介面。Java SE 6在java命令上提供了一個選項,可以在顯示程式主介面之前先顯示一幅圖。
java -splash:splash.gif TestSplash
如果運行以上的命令,在出現圖2所示的介面之前會先顯示splash.gif,然後再過幾秒鐘splash.gif自動關閉,然後會顯示主介面。在上面程式中的Thread.sleep(3000); 是為了使splash.gif顯示的時間長一些,可以將這句改為直正的初始化代碼。splash.gif檔案如圖3所示。
圖3 splash.gif