【正文】
draganddrop facilities of the native platform. The Drag and Drop (DND) API is quite challenging to use because it operates at a high level of abstraction to support the different ways in which it can work and because it is designed to operate on arbitrary datatypes, as specified by the interface. Let39。 the rest are currently optional extensions, but some of them will no doubt find their way into the core in the future. The other APIs in this area are Java 3D, Advanced Imaging, Image I/O, the Java Media Framework (JMF), and Speech. Java 3D The Java 3D API provides a set of objectoriented interfaces that support a simple, highlevel programming model, enabling developers to build, render, and control the behavior of 3D objects and visual environments. The API includes a detailed specification document and implementation for packages and . Advanced Imaging Operations covered by this specification enhance a user39。在本文中,我們將探究這個進(jìn)步,詳細(xì)審視當(dāng)前 版本的功能,最后展望一下未來,看看發(fā)行版 會提供些什么。在 Java2 平臺上,這些擴(kuò)展中的大部分都可以在平臺的核心中找到它們的一席之地,成為 Java 基礎(chǔ)類( Java Foundation Classes, JFC)的一部分。它不僅是 AWT 所提供的組件的替代品,并且在這些組件的基礎(chǔ)上有了很大進(jìn)步。當(dāng)然,這也是問題開始的地方。 AWT 只提供了有限的一套組件,是因?yàn)樽钚」帜阜椒ㄖ挥挟?dāng)一個特殊的組件或功能在每個平臺上都可用的時候才能夠被提供。為了實(shí)現(xiàn)這個目標(biāo),本機(jī)組件必須盡量地丟棄。 最好的方法 Swing 沒有完全遵循 Java 語言作為一個平臺的路線。 Swing 為 Windows 平臺和 Motif 平臺分別提供一個 Java lookandfeel(以前稱為 Metal),同時為 Macintosh 平臺提供一個 Java lookandfeel(作為額外選項(xiàng))。 另外,您可以制作自己的 lookandfeel。為了集成本機(jī)平臺的拖放功能,它也可以以一種平臺相關(guān)的方式運(yùn)行。隨著 Java 2D API(它包含一個真正的功能集)的出現(xiàn),所有的一切都改變了。這樣安排的原因是:向后兼容。如果使用第二種選擇,就可以使用 2D API 的所有附加功能。例如,(x,y,w,h)將在 (x,y)點(diǎn)上構(gòu)造一個以寬為 w、高為 h 的矩形為邊界的橢圓,其中 x、 y、 w 和 h 都為浮點(diǎn)值。每一個轉(zhuǎn)換都可以用一個 3x3 的矩陣來表示,該矩陣規(guī)定轉(zhuǎn)換的源點(diǎn)和目標(biāo)點(diǎn)之間的映射。它們包括: 使用抗鋸齒處理和微調(diào)( hinting)以達(dá)到更好的輸出質(zhì)量 可以使用系統(tǒng)安裝的所有字體 可以將對圖形對象的操作(旋轉(zhuǎn)、縮放、著色、剪切等等)應(yīng)用到文本上。這個領(lǐng)域的其它 API 還有 Java 3D、 Advanced Imaging(高級圖像處理)、 Image I/O(圖像 I/O)、 Java Media Framework( JMF,Java 媒體框架)和 Speech(語音)。它包括的操作有對比度增強(qiáng)、剪切、縮放、幾何彎曲和頻率范圍處理。 Java Media Framework( JMF) JMF 是一種 API,可以將音頻、視頻和其它基于時間的媒體整合到 Java 應(yīng)用程序和 applet 中。 這個綜合 API 被分成幾個規(guī)范: Java Speech API 規(guī)范( Java Speech API Specification, JSAPI) Java Speech API 程序員指南 Java Speech API 語法格式規(guī)范( Java Speech API Grammar Format Specification, JSGF) Java Speech API 標(biāo)記語言規(guī)范( Java Speech API Markup Language Specification, JSML) 這個 API 沒有 Sun 公司的參考實(shí)現(xiàn),但是有許多第三方實(shí)現(xiàn),包括 Speech for Java(可以從 IBM alphaWorks 獲得),它使用 ViaVoice 來支持語音命令識別、聽寫和文本到語音的合成。 Speech Java Speech API 允許開發(fā)人員將語音技術(shù)整合到 Java applet 和應(yīng)用程序的用戶界面中。 Image I/O 這種 API 定義了一種可讀 /寫不同格式圖像的可插式框架。 這個 API 包括一個詳細(xì)的規(guī)范文檔和 、 包的實(shí)現(xiàn)。 先進(jìn)的字體度量功能,超過舊的 類中的相應(yīng)功能 排版功能可以實(shí)現(xiàn)單詞換行和調(diào)整多行文本 多媒體選項(xiàng): Java Media API( Java 媒體 API) Java Media API 是一套涵蓋廣泛的多媒體技術(shù)領(lǐng)域的資源。多數(shù)情況下是使用雙精度值,并且角度是用弧度來度量的(而不是 Arc2D 類中使用的度)。仿射轉(zhuǎn)換指的是平行線在轉(zhuǎn)換后還保持平行。其中每一個都是抽象類,他們都是兩個名為 Double 和 Float 的非抽象內(nèi)部類(它們是抽象外部類的子類)。 盡管在 語言的當(dāng)前版本中,這個對象真是一個 Graphics2D 對象。 API 的其它部分由 層次結(jié)構(gòu)中的其它包提供,包括、 和 。讓我們看一個示例。 Java2 版本引入了 包。相反,它們使用輕量級組件,有和本機(jī)組件一樣的外觀。 建立這個橋梁的機(jī)制被稱為 可插式 LookandFeel(它很接近主題的概念,在 linux 社區(qū)中非常流行)。如果不包含 X System Window 的調(diào)用,您就不能在 UNIX 上顯示一個窗口。在以前的 中,是無 法區(qū)分鼠標(biāo)鍵的點(diǎn)擊的,因?yàn)?Macintosh 只有一個鼠標(biāo)鍵,所以其它的每個平臺都要表現(xiàn)得好像自己也只支持一個鼠標(biāo)鍵一樣。但隨著復(fù)雜性的增加,情況就不一樣了,這只是因?yàn)榻M件的不同,而且在某些情況下,不管修正了多少錯誤,并且 AWT 的部件被重寫了多少次,它們總會表現(xiàn)得有一點(diǎn)不同。例如,在 UNIX 平臺上, 類是用窗口小部件 Motif PushButton 實(shí)現(xiàn)的。在本文中,我們將討論 JFC 的每個主要組件,并討論一些可選的擴(kuò)展。 在 Java2 平臺發(fā)行之前,抽象窗口工具包( Abstract Window Toolkit, AWT)是 Java 平臺的圖形功能的范圍。s Guide Java Speech API Grammar Format Specification (JSGF) Java Speech API Markup Language Specification (JSML) There is no Sun reference implementation for this API, but there are numerous thirdparty implementations, including Speech for Java (available from IBM alphaWorks), which uses ViaVoice to support voicemand recognition,