日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java SE 6.0实现高质量桌面集成开发

發(fā)布時間:2024/1/8 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java SE 6.0实现高质量桌面集成开发 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最新的Java標準版本6.0(代碼名為Mustang)將在功能上進行一系列的改進--開發(fā)者們能夠方便地用Java處理安全,JMX,操作系統(tǒng)文件,國際化和桌面開發(fā)等一系列問題。Sun在開發(fā)這個版本的過程中表現(xiàn)出非常積極的合作態(tài)度。他們通過JSR 270仔細地傾聽開發(fā)者的意見并且在2006年2月早些時候就發(fā)行了所有的Java SE源碼和二進制代碼。看來,Sun正在傾力打造全新的桌面開發(fā)工具。

  相對于以前的Java版本,Mustang的桌面集成能力特別受Java開發(fā)者歡迎。這些新特征把很多有趣的功能加入到Java桌面應用程序的開發(fā)中。以前,開發(fā)例如Internet Explorer,系統(tǒng)托盤和郵件客戶端等Java時,開發(fā)者必須在創(chuàng)建如Jtray和SysTray等Java本機接口(JNI)方面大傷腦筋。盡管這種"補丁"方案能夠實現(xiàn)既定目的,但是絕大部分的Java開發(fā)者都非常盼望這些特征成為核心Java平臺的一部分。

  本文將詳細分析一個示例應用程序GoMustang的創(chuàng)建過程。從中,我將向你展示如何使用Java SE 6在應用程序啟動時顯示一個Splash屏幕,怎樣創(chuàng)建系統(tǒng)托盤,以及怎樣從Java內部啟動本機桌面互聯(lián)網(wǎng)瀏覽器。

  注意,為調試本文中的示例程序,你需要安裝:Java Standard Edition 6 Beta和Apache Ant 1.6.5。

  二、 開發(fā)環(huán)境

  (一) 準備Java SE 6 Beta

  首先,你要從Sun的Java站點下載Java SE 6 Beta。因為Sun已經(jīng)確定將在2006年的秋天正式發(fā)行Java SE 6,而且據(jù)JSR 270專家組的建議其中的一些特征還將會作適當?shù)母淖?#xff1b;因此,目前在你的桌面開發(fā)中試用Mustang正是時候。

  估計,最終本文中所描述的特征不會出現(xiàn)多大變化;所以你可以放心使用JDK,JRE等的最新下載版本。

  首先,請確保你的桌面平臺被支持。我在Windows XP上開發(fā)和測試了本文的示例應用程序,且毫無問題。

  其次,還要確保你的計算機的Windows系統(tǒng)屬性中的環(huán)境變量指向Java SE 6.0 JDK。我把JAVA_HOME環(huán)境變量設置為JAVA_HOME=C:\Program Files\Java\jdk1.6.0。

  一旦安裝完成,你應該立即檢查Java JRE的版本。如果一切順利,應該顯示類似下面的一條消息:

C:\java\mustang> java -version
java version "1.6.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0-beta-b59g)
Java HotSpot(TM) Client VM (build 1.6.0-beta-b59g,mixed mode,sharing)
  (二) 準備Ant

  在本文中,你將使用Apache Ant來構建示例應用程序。因此,如果你還沒有這個工具,你可以從Apache網(wǎng)站下載并把它安裝到你的計算機上。

  然后,你可以使用Ant屬性來檢查Ant Java版本。下列的例子顯示了一個不正確的Java版本:

${ant.java.version}
  這是因為Ant內置的ant.java.version系統(tǒng)屬性被設計僅擁有1.1,1.2,1.3,1.4和1.5這幾個值。估計,Ant開發(fā)小組可能很快就會更新這個屬性以包含1.6;但是,當你想自己實現(xiàn)這一點時要特別小心。

  為了慎重起見,你可以使用-debug參數(shù)來運行Ant。如果顯示如下內容,則說明Ant實際上在使用一個1.6版本的JRE:

>>
Detected Java version: 1.5 in: C:\Program Files\Java\jdk1.6.0\jre
<<
  (三) 安裝你的開發(fā)環(huán)境

  接下來,安裝你的開發(fā)環(huán)境。為此,最簡單的方法是下載本文相應的源碼并解壓。如果你把ZIP文件解壓到你的C:\路徑下,那么你會看到如下結構的文件和目錄:

c:\mustang\
|_build.xml
+_src
  后面,你將使用Ant構建文件build.xml來實現(xiàn)復制,編譯,構建,打包和運行GoMustang示例應用程序。該文件包含下列幾個關鍵的Ant目標:

[init]
[clean]
[compile]
[dist]
[run]
  這里,[init]目標負責建立文件夾結構并且把文件拷貝到build文件夾;[compile]實現(xiàn)編譯,而[dist]通過使用一個Manifest文件來創(chuàng)建一個JAR(后面將詳細討論)。[run]目標負責啟動你的應用程序,而[clean]將幫助你首先刪除所有的由Ant任務所創(chuàng)建的文件和目錄,然后從一個完全干凈的環(huán)境開始下面的任務。

  src目錄包含3個文件:一個GoMustang.java(源碼文件)和兩個GIF文件(gomustang-splash.gif用作Splash屏幕,gomustang.gif用作系統(tǒng)托盤中的圖標)。

  現(xiàn)在,你已經(jīng)打好了基礎。下面,我們開始創(chuàng)建你的應用程序的Splash屏幕。

  三、 Splash屏幕

  對基于桌面的應用程序來說,Splash屏幕一直在應用程序的啟動過程中起著關鍵作用。一個醒目的Splash屏幕能使用戶熱切地盼望應用程序的啟動--通過顯示行銷廣告,特定的法律條文,專業(yè)圖象,等等。同時,它還提供給應用程序一定的時間周期以裝載要求的庫文件。
在Java應用程序開發(fā)中,實現(xiàn)Splash屏幕一直是一種挑戰(zhàn)性編程,因為在JVM啟動和所有要求的JRE和應用程序庫被裝載前程序無法取得控制權。而等到一個Java應用程序得到控制線程的機會時,顯示一個Splash屏幕已經(jīng)太晚了。

  Java SE 6甚至允許一個應用程序在JVM啟動前就可以顯示一個Splash屏幕。這項功能被構建于Java應用程序啟動器中--由它負責在一個未經(jīng)修飾的窗口中顯示一幅圖像。它允許使用GIF,PNG或JPEG圖象,可以是透明性或半透明的,并且可以存在動畫效果。而且,Java SE 6發(fā)行中還帶有一個SplashScreen類--它允許一旦應用程序控制線程,該程序就可以操作Splash屏幕。

  你可以用下面兩種方式之一來啟動一個Splash屏幕:

  1. 在一個JAR的Manifest文件中指定一個具體的SplashScreen-Image屬性;

  2. 使用一個命令行-splash參數(shù)。

  (一) 使用JAR的Manifest屬性

  本文下載源碼中的JAR文件包含了一個gomustang-splash.gif文件(此文件在應用程序啟動時顯示一個Splash屏幕)和編譯類文件GoMustang.class。這個JAR文件的Manifest包含定義main()方法的類的名字和SplashScreen-Image屬性(它指向gomustang-splash.gif文件)。

  下面的列表展示了Ant build.xml JAR任務的內容--其中指定了main-class和SplashScreen-Image屬性:

...
<jar jarfile="${dist}/GoMustang.jar" basedir="${build}">
<manifest>
<attribute name="Main-Class" value="GoMustang"/>
<attribute name="SplashScreen-Image" value="gomustang-splash.gif"/>
</manifest>
</jar>
...
  為了看清Splash屏幕的真正運行,你可以通過在命令提示符上輸入ant run來執(zhí)行build.xml的[run]目標。因該程序很小,所以Java應用程序會在人眼能看見它之前完成打開和關閉操作。為此,你可以使用暫停3秒的編碼小技巧。

  一旦運行run目標,Ant應該會輸出如圖1所示的控制臺跟蹤信息,然后暫停3秒,此間用戶會看到Splash屏幕中的gomustang-splash.gif圖片。


圖1.Ant暫停


  3秒后,Ant腳本完成應用程序的創(chuàng)建,見圖2。


圖2.Ant腳本完成系統(tǒng)托盤的創(chuàng)建


  一個圖標將在系統(tǒng)托盤中被創(chuàng)建,由圖3所示。


圖3.GoMustang圖標


  (二) 使用命令行-splash參數(shù)

?顯示一個splash屏幕的第二種方法是,使用-splash命令行參數(shù)傳遞splash屏幕文件名,如下所示

C:\mustang\build> java -splash:gomustang-splash.gif GoMustang

  注意,為了使該命令正常運行,你需要從c:\mustang\build目錄(編譯class文件和splash屏幕GIF文件所在的位置)下使用Java的命令行方式。這些文件都是由Ant中的build.xml文件中的任務所創(chuàng)建。

  一旦應用程序獲得一個線程的存取權限,你就可以使用java.awt.SplashScreen類通過編程存取Splash屏幕。這是一個singleton類,它提供專門的函數(shù)來改變Splash屏幕圖像,檢索Splash屏幕的大小和界限,操作有關圖形對象,并最后關閉Splash屏幕。

?

  四、 GoMustang.java文件

  在繼續(xù)之前,你應該先熟悉一下GoMustang.java文件。這個文件定義一個單個的Java類GoMustang,并且包含下列兩個關鍵函數(shù):

  · main
  · createTrayIcon()

  你可能已經(jīng)猜出,main是主要的入口點-你可以存取java.awt.SplashScreen Java類以操作Splash屏幕。在GoMustang應用程序中,你可以使它暫停幾秒,然后通過調用splashScreen.close()來關閉Splash屏幕。然而,你可以在關閉它之前來操作該Splash屏幕。
createTrayIcon()類是這兩個函數(shù)中更為令人激動的。它負責實現(xiàn)所有的有趣的工作來安裝應用程序。這又涉及到我們將要討論的另一個主題:系統(tǒng)托盤圖標。

  五、 系統(tǒng)托盤圖標

  系統(tǒng)托盤位于Windows的任務狀態(tài)區(qū)或位于Gnome的通知區(qū)。它是在一個操作系統(tǒng)的桌面UI的角落的一個很小的區(qū)域,能提供到當前運行的應用程序的可視化和直接的存取。本文所提供的Windows平臺上的GoMustang應用程序能夠實現(xiàn)當右擊系統(tǒng)托盤圖標時產(chǎn)生一個彈出菜單(見圖4)。


圖4.在系統(tǒng)托盤上的GoMustang的彈出菜單


  該GoMustang應用程序SystemTray有一個彈出菜單。菜單有兩個菜單項:"Exit"和"Launch Browser"。"Exit"負責退出應用程序,而"Launch Browser"負責打開默認的互聯(lián)網(wǎng)瀏覽器并使其指向http://www.devx.com。

  在過去,創(chuàng)建能夠靈活控制操作系統(tǒng)的桌面系統(tǒng)托盤的Java應用程序需要不是Java核心部分的庫的支持。為此,產(chǎn)生了JDIC(Java桌面集成組件),而且Sun決定把JDIC的一些組件作為Java SE 6的一部分一同發(fā)行。相關的類java.awt.SystemTray和java.awt.Desktop描述了這些關鍵組件。其中,Java.awt.SystemTray描述操作系統(tǒng)的任務狀態(tài)區(qū)或通知區(qū)。

  顯示在系統(tǒng)托盤中的圖標是由java.awt.TrayIcon描述的。TrayIcon不僅描述圖像而且還描述接收事件的實際對象,并負責顯示提示信息,添加彈出菜單項,顯示消息,等等。你可以通過displayMessage(String)和setToolTip(String)函數(shù)來設置TrayIcon上的消息和提示信息。TrayIcon還能把ActionEvents轉發(fā)到經(jīng)由Trayicon的addActionListener(ActionListener)函數(shù)注冊的ActionListener。彈出菜單是由java.awt.PopupMenu描述的,而且你可以通過addPopupMenu(PopupMenu)函數(shù)把它們添加到TrayIcon。

  下面,讓我們剖析一下GoMustang Java類的createTrayIcon()函數(shù)。正如在列表1(見所附源碼)中的GoMustang代碼的詳細注釋所表明的:首先,你要調用SystemTray.isSupported()函數(shù)來檢查是否操作系統(tǒng)支持最小SystemTray功能;如果支持的話,這個函數(shù)應該返回true。

  一旦程序知道操作系統(tǒng)支持系統(tǒng)托盤功能,它就創(chuàng)建Exit和Launch Browser菜單項,而且把這些菜單項加到彈出菜單中。當用戶右擊系統(tǒng)托盤的圖標時,這個菜單就會彈出。ActionListeners函數(shù)被加到Exit和Launch Browser菜單項上。當用戶選擇這些菜單項時,actionPerformed(ActionEvent)將給程序一個機會執(zhí)行某種動作。這對于Exit菜單項來說是通過執(zhí)行System.exit(0)命令而退出應用程序;而對于Launch Browser菜單項來說是通過指向http://www.devx.com而啟動缺省的瀏覽器。注意,啟動瀏覽器需要使用新的java.awt.Desktop對象(稍后再討論)。

  然后,應用程序創(chuàng)建一個彈出菜單對象并且把Exit和Launch Browser菜單項添加到彈出菜單。下一步是用一個奔馬圖像創(chuàng)建托盤圖標。你可以使用getClass().getResourceAsStream(file name)函數(shù)存取本文下載源碼中的gomustang.gif文件并把它加載到一個圖像對象中。然后,托盤圖標對象就可以與彈出菜單一同創(chuàng)建;Action和鼠標聽取器也被關聯(lián)到托盤圖標上--對于本文例程來說,只顯示一條消息。托盤圖標最后被添加到系統(tǒng)托盤上。系統(tǒng)托盤是一個singleton對象,它可以通過SystemTray對象的getSystemTray()函數(shù)加以檢索。在系統(tǒng)托盤上創(chuàng)建托盤圖標的完整過程就是這樣。

  現(xiàn)在,讓我們更詳細地看一下"Launch Browser"菜單項是如何啟動瀏覽器的。你可以分析相應于"Launch Browser"菜單項的函數(shù)actionPerformed(ActionEvent)"來查看如何使用桌面對象。請參考下面代碼(列表2的一部分):

...
MenuItem launchBrowserItem = new MenuItem("Launch Browser");
ActionListener launchListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (Desktop.isDesktopSupported()) {
actionMessage = "Launched Browser";
try{
trayIcon.displayMessage("GoMustang!",
"Launching Browser...", TrayIcon.MessageType.INFO);
Desktop desktop = Desktop.getDesktop();
desktop.browse(new URI("http://dev.yesky.com"));
trayIcon.setToolTip("GoMustang!");
}
catch(Exception exp){...}
}
}
};
launchBrowserItem.addActionListener(launchListener);
...

  在列表2(見所附源碼)中最讓我們感興趣的關鍵對象是java.awt.Desktop類。這個Desktop類,如我們早些時候所提及的,來自JDIC。該Desktop類負責定位和運行操作系統(tǒng)特定的桌面應用程序。默認的因特網(wǎng)瀏覽器應用程序映射是Mozilla的FireFox;因此,在顯示消息"Launching Browser..."以后,desktop.browse(URI)函數(shù)將打開一個指向 http://dev.yesky.com的窗口。

InvokeUI是一個Java桌面程序開發(fā)框架。

?它將Flex界面API進行Java本地封裝,以實現(xiàn)用Java快速構建

?漂亮桌面程序的目的。InvokeUI框架構建于SmartInvoke之上,整個

?系統(tǒng)結構如下:

SmartInvoke:

? 提供Java與Flash互調的功能,它是InvokeUI功能得以實現(xiàn)的核心。

? 項目地址:http://smartrcp.org

Swt :

SmartInvoke與InvokeUI都是構建在Swt之上的,它是基礎。

InvokeUI的目標:

  • 使Java程序員在完全不懂Flex的情況下也可以快速寫出漂亮的客戶端程序。
  • 支持第三方Flex 庫的動態(tài)加載,以增強標準flex庫的功能。
  • 支持將第三方Flex API自動轉換為對應jar庫文件,方便java調用。
  • 完全針對swf進行動態(tài)調用,避開Flex SDK編譯花費的時間,使程序開發(fā)更敏捷更愉快
  • 支持類似mxml的界面定義語言,快速構建程序界面
  • 演示程序截圖: 聽起來有點兒玄乎上圖上源代碼讓大家信服,示例程序運行效果如下圖:


    [1]?[2

    轉載于:https://www.cnblogs.com/xigua1hao/p/3405327.html

    總結

    以上是生活随笔為你收集整理的Java SE 6.0实现高质量桌面集成开发的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 一级空姐毛片 | 国产视频97 | 亚洲美女激情视频 | 草莓巧克力香氛动漫的观看方法 | 色婷婷av一区二区三区麻豆综合 | 亚洲专区在线播放 | 久久在线电影 | 亚洲国产精品无码久久久久高潮 | 成人午夜淫片100集 伊人久久国产 | 男人的天堂在线观看av | 欧美日韩高清在线播放 | 性欧美videos另类艳妇3d | 日本成人午夜 | 黄色最新网址 | 久久久久久综合 | 精品视频网站 | 黄色毛毛片 | 神马午夜我不卡 | 丝袜熟女一区二区三区 | h片免费在线观看 | 久久免费国产精品 | 久久精品国产99久久 | 艳妇臀荡乳欲伦交换在线播放 | 人妻少妇精品无码专区久久 | 黄色天堂网 | 成人h动漫精品一区二区无码 | 少妇一级淫片日本 | 亚洲AV成人无码久久 | 99免费观看 | 日韩精品久久久久久久电影99爱 | 91大片在线观看 | 免费看片成人 | 亚洲天堂av免费在线观看 | 99热1 | 九九在线免费视频 | 婷婷综合网 | 久久综合色视频 | 777精品 | 免费污视频在线观看 | 高hhhhh| 99久久免费看精品国产一区 | 亚洲日本三级 | 91视频观看 | 欧美网站在线观看 | 九九视频在线播放 | 国语对白91 | 偷拍亚洲视频 | 伊人精品视频 | 亚洲剧情在线 | 小泽玛丽亚在线观看 | www.国产色 | 日本色呦呦| 自拍偷拍综合 | 羞羞动漫在线观看 | 草草影院在线播放 | 久久99精品国产麻豆婷婷洗澡 | 亚洲麻豆精品 | 温柔女教师在线观看 | 国产又粗又猛又爽又黄av | 岛国av噜噜噜久久久狠狠av | 叶全真三级 | 一区二区欧美视频 | 亚洲婷婷在线视频 | 91成人精品国产刺激国语对白 | 一级片www| 日韩无码精品一区二区三区 | 国产麻豆视频 | www,xxx日本| 亚洲va久久久噜噜噜久久天堂 | 少妇脚交调教玩男人的视频 | 久久精品成人一区二区三区蜜臀 | 麻豆一区二区三区四区 | 一级 黄 色 片69 | 日本人妻换人妻毛片 | 国产一级久久久 | 自拍偷拍激情 | 涩涩视频免费 | 男人操女人下面视频 | 在线观看不卡的av | 日韩在线一 | wwwxxx亚洲| 欧美在线不卡视频 | 欧美精品综合 | 日韩欧美片 | 婷婷中文字幕 | 欧洲做受高潮免费看 | 开心激情综合 | www一起操 | 亚洲欧美国产一区二区三区 | 日韩av一区二区三区四区 | 日韩在线精品视频 | 91精选 | 中文字幕av网站 | 波多野结衣在线播放视频 | 后进极品美女圆润翘臀 | 91精品91久久久中77777老牛 | 国产福利一区二区 | 男人和女人日批视频 | 狠狠操综合网 |