程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Merlin的魔力: J2SE 1.4.2提供兩種新的外觀設計

Merlin的魔力: J2SE 1.4.2提供兩種新的外觀設計

編輯:關於JAVA

迄今為止,所有Merlin的魔力專欄都是關於Java 1.4版本的新特性,本文主要針對目前正在測試的1.4.2版本。Sun認為Windows的經典外觀已經過時,沒有人再使用Motif了 -- 至少在用戶桌面上。您將在這一標准Java平台的最新版本中找到新款Windows外觀以及稱為GTK+的全新外觀,當用戶使用Windows XP操作系統時新款Windows外觀看起來象Windows XP,GTK+使用普通Linux桌面的外觀。

Swing架構提供可插入外觀框架。例如,該框架提供一種標准方法使所有組件的字體為8-point bold Lucida,無需更改所有調用來創建一個組件。您只需插入新的設置到外觀中,像魔法一樣,所有調用都自動拾取這些更改。您甚至可以通過設置外觀來改變GUI的整體風格。以前,J2SE 1.4 為以平台為導向的UI提供外觀設計,如Microsoft Windows 和 Motif。它還提供專門面向Java平台的稱為Metal的交叉平台UI,無論用戶使用什麼桌面,它看起來都是千篇一律。

更改外觀設計

在我們檢驗最新的外觀設計之前,我們先展示如何更改一個Java程序的外觀,如表1所示:

表1:查找所有顯示模式

import java.awt.*;
import javax.swing.*;
public class Start extends JFrame {
public Start() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane();
JButton button = new JButton("Hello");
c.add(button, BorderLayout.CENTER);
setSize(100, 50);
show();
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName());
//UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
new Start();
}
}

UIManager 的 setLookAndFeel() 調用允許您進入新外觀設計完全標准化的類名中。您再也無須擔心哪個類名適用於交叉平台Metal UI ( javax.swing.plaf.metal.MetalLookAndFeel) ,您只需使用 getCrossPlatformLookAndFeelClassName() 方法向系統詢問名字。另一方面, getSystemLookAndFeelClassName() 將返回專用於用戶桌面的UI類名。如果用戶在Windows設備上運行該程序,他將通過 com.sun.java.swing.plaf.windows.WindowsLookAndFeel 類獲得Windows UI。在UNIX設備上,將返回Motif/CDE接口或 com.sun.java.swing.plaf.motif.MotifLookAndFeel 類。J2SE 1.4.2提供新GTK+外觀,但不返回作為UNIX機器的系統外觀類。這種情況將在J2SE 1.5版本中得到改善。圖1顯示了當在Windows 2000設備上運行時Start程序的輸出外觀:

圖1:交叉平台UI

Windows XP和UNIX用戶將發現系統外觀稍微有些不同,如圖2所示:

圖2:Windows經典UI

注意:Apple的Java版本的Macintosh用戶將獲得一個Aqua外觀。

正如前面所述,Windows 2000用戶將看到一個UI,Windows XP用戶將看到另外一個UI。新Windows XP不能提供一組完整的外觀類。實際上,現有的一組Windows UI類將為非XP用戶顯示Microsoft Windows的經典版本,為Windows XP用戶顯示Windows XP版本。如下所示,設置系統屬性 swing.noxp 將為Windows XP用戶提供獲得更經典的Windows界面的方法。非-XP Windows用戶無法獲得新款XP界面。

java -Dswing.noxp=true Start

GTK+ UI

雖然新款Windows XP體驗只是修改後的Windows外觀,但GTK+ UI是一種全新設計,它基於GTK+ 2.0 (見 參考資料關於 GTK+ 2.0信息的鏈接)。非-Linux用戶將有可能發現這一全新的名稱。您可以把它作為典型Linux桌面UI體驗來考慮(當然,它不是目前唯一可用的UI)。用戶可以定制 GTK+的許多部分,將配置文件放在特殊的位置,桌面的外觀將相應地發生變化。此外,多文件接口(multi-document interface,MDI) -- 在Swing中稱為 JInternalFrame&#160 --等功能不是框架的一部分,它位於基本的窗口管理器的左側。因此,您可以使用主題引擎(Theme engine)來定制桌面。使用Swing UI for GTK+,主題由稱為 Metacity的項目來支持(見 參考資料)。通過設置系統屬性 swing.metacitythemename ,您可以控制使用那個GTK+主題。除了缺省主題之外,還支持Crux和Bluecurve主題。您可以將其它主題保存在 swing.gtkthemedir 系統屬性規定的目錄中。GTK+資源文件還提供定制外觀的方法。目前不支持創建額外的GTK引擎,但是您可以訪問Themes.org以了解未來發展計劃。

SwingSet2和新UI

展示新外觀設計最簡單的方式是使用J2SE提供的SwingSet2演示程序來闡述,您可以在安裝J2SE 1.4的demo\jfc\SwingSet2目錄中找到它們。您可以使用 java -jar SwingSet2.jar 命令來啟動 SwingSet2程序,它使用 -jar 選項來運行JAR清單文件(Manifest file)中規定的主類。

初始界面顯示一些JInternalFrame組件和多個按鈕 --您經常在桌面應用程序上看到的項目。圖3顯示Windows XP機器上的SwingSet應用程序的外觀:

圖3: Windows XP上的SwingSet的外觀

圖4顯示GTK+的外觀:

圖4:使用GTK+的SwingSet的外觀

一種比較顯而易見的Windows變化是文件對話框。圖5顯示了Windows XP的對話框外觀:

圖5:Windows XP文件對話框

在GTK+端,圖6顯示了其彈出窗口(Popup)更用戶友好的外觀:

圖6:GTK+警告對話框

結束語

J2SE 1.4.2顯著體現了Sun保持Java桌面最新標准與時俱進的承諾。通過Windows XP和GTK+外觀設計,用戶將發現Java應用程序看起來更像本機的應用程序。除了新型外觀設計之外,J2SE 1.4.2還包括大量的Bug fixes和一個JFileChooser,在某些環境中,它的速度要快3倍。(您可能奇怪如果它這麼慢的話,我們為什麼還一直在使用它呢,但它至少目前是快速的。)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved