亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java桌面端程序開發

2019-11-18 12:06:07
字體:
來源:轉載
供稿:網友

  java對于服務器,個人電腦和移動設備來說是一項偉大的技術.由于需要java的跨平臺的特性,因此java在服務器和移動設備方面的應用是非常成功的。但java在個人電腦應用方面的情況和在服務器及移動設備方面的應用有所不同,但是這很快就會有所改變,至少比你想象得要快。在這篇文章中,我會分析一下java在桌面環境中的應用將怎樣得到提升,然后具體說一下java GUI(用戶圖形接口)的三個主要的工具:AWT, Swing, 和SWT.。在下文中,我將會開發一個完整的java桌面應用程序.
  
  Java與桌面端
  現在,流行的桌面平臺要數Windows、Mac、and linux了。但它們不是十全十美的,Windows主宰著桌面操作系統的市場,其上有巨大的應用和開發群體,但它昂貴且有許多安全漏洞。Linux有著穩固的基礎,它是開源的軟件,比Windows更可靠。Macs非常輕易操作且不是黑客的目標,但與Windows和Linux比起來,Mac的硬件和軟件可選的余地非常的有限。公司和個人選擇他們的操作系統基于許多因素?;ㄙM少且安全性高是首選的因素,這導致一些組織從Windows 系統轉而選擇Linux。對許多用戶來說,可用性及對原有應用程序的支持是非常重要的因素,這意味著Windows 將繼續享有巨大的市場。Mac有其自己忠誠的用戶,這使得蘋果機仍然可以存活,Linux 在桌面的流行及Mac的成功創造了多樣性,這種多樣性正是Java需要的,這種多樣性使得Java在桌面有舉足輕重的地位。
  
  跨平臺的支持
  Java 運行于所有相關的操作系統,包括Windows、 Mac和Linux。對于任何組織,他想把現有的應用從一個操作系統移植到另一個操作系統而不用做太多的改動,那么Java正是他們首選的桌面開發平臺?;蛟S用微軟的可視化工具很輕易構建.NET應用,但是這將使你被綁定在了Windows平臺上了。 很多人也許想馬上用Linux 代替Windows 從而避免由微軟件操作系統的漏洞帶來的問題。用戶不能容忍的問題之一是當從Windows移植到Linux帶來的巨大的費用。假如你的應用程序用Java構建,你就沒有了這些問題,Java的圖形用戶界面看上去會跟你用的操作系統一樣,而并不需要做什么改動。 假如有一天又有一種桌面操作系統出現的話,java 是個安全的賭注,因為它現在能夠運行在Windows和Linux 上,那么可以推測它也可以運行在將來可能出現的操作系統上,這些操作系統可能或遲或早地由微軟,或是開源社區,或是其它的人開發出來。
  
  豐富的特征
  最初,Java只有非常有限的一些特征去構建圖形用戶界面。思想就是用平臺無關的Java應用程序接口打包不同的操作系統的本地圖形用戶界面,稱之為抽象的窗口工具。僅有普通的部件如文件域、文本區、選擇框、單選按鈕、列表框和按鈕被AWT支持,圖形和圖像的特性支持非常有限,也就是說,只足夠構建簡單的applet程序。 熟悉到需要更高級的圖形用戶界面組件和圖形能力,Sun公司開發了Swing,Java 2D,Java 3D,圖像的輸入/輸出,Java高級圖像(JAI)和很多其它的。這些中的一些窗體組件現在已經是Java 2標準版(J2SE)里的一部分,并且其它的一些擴展必須和你的應用程序打包在一起。例如Swing、Java 2D、圖像的輸入/輸出都是Java的核心API,隨著Java開發工具包(JDK)和Java運行環境一起提供。讓我們不要忘了J2EE平臺。假如你開發服務器端的應用程序并且需要豐富的圖形用戶界面,那么你毫無疑問應該選擇Java。這答應你把服務器端的一些代碼移到客戶端,反之亦然。例如:一個項目可能開始是基于WEB和圖形界面,在某些時候,用戶可能要求圖形元素不能在Html中實現,假如你選擇java做客戶端應用,那么你可以重用這些當初用來做服務器端的代碼。假如你用遠程調用,一些類會真正地實現服務器和客戶端的共享。通過頁面服務器,Java桌面應用也能夠和其它的Java 或非Java應用程序通信,如CORBA, TCP/ip,或是 HTTP。
  
  
  Java圖形界面工具
  Java有三個主要的圖形界面工具:AWT,Swing和SWT。Swing 是構建java圖形界面標準的API(應用程序接口),一些AWT類由Swing基礎而來。SWT是一個非常有前途的新的窗體工具,由IBM資助。但是事實上,這三者相互補充,他們滿足不同的需求。
  
  AWT
  抽象窗口工具集為簡單的applet程序設計,它不適宜用來構建豐富的桌面圖形界面。但是從開始被介紹,它至少有一個好的思想就是布局治理,它負責為組件找到一個放置的位置,這種機制是必需的,因為GUI組件在不同的操作系統中有不同的尺寸。 現在, AWT擴展了組件模型和事件處理機制(由JavaBeans說明定義),新的圖形API(稱為Java 2D),支持剪貼板和拖拉操作,打印,準入,和新的GUI工具Swing,所有這些都歸到Java基礎類中(JFC)。 Swing Swing是曾經開發的最復雜的GUI之一。它有一套完全的組件從按鈕到文件域到表格,樹型和文件編輯器。這些組件不依靠于操作系統本地的部件,而是用原始的圖形像直線、矩形、文字畫出。這種畫代表感觀插件,它能夠模擬本地的感觀。 Swing也有平臺無關的外觀稱為"Metal"。 Swing的結構由MVC模式得到啟發,這里在屏幕上的視覺GUI組件和支持數據的模型對象之間有一個明顯的分隔,在GUI和數據層之間的通訊基于事件。在最初的Swing版本中有許多錯誤并且有執行問題,這減慢了接受它的速度。Swing最大的問題是被從事于并且許多人相信它是為開發桌面應用而預備的。今天,有許多基于Swing開發的商業產品,包括大多數的Java集成開發工具,我所喜歡的集成開發工具是Jbuilder,它的速度相當的快。
  
  SWT
  SWT是IBM為它的Eclipse集成開發環境而開發的圖形用戶界面工具。SWT可以在Eclipse環境外使用,而且提供對操作系統本地圖形用戶界面的直接訪問。因此,基于SWT的Java應用程序擁有本地的圖形用戶界面并且可以和本地別的應用程序和部件集成在一起。 假如你的桌面應用程序產生HTML報表,你想把它顯示給用戶看。你可以使用Swing去瀏覽簡單的HTML文檔,但這不是一個理想的的解決方案。最好是在你的應用程序里提供IE或者Mozilla瀏覽器引擎。SWT社區現在正在設計瀏覽器API,這些API可以讓你產生基于IE或者Mozilla的HTML窗口。 SWT現在可以在AIX, HPUX, Linux, QNX, Solaris, and Windows下面運行。Mac OS X is 也在進行之中
  
  誤解與Bug
  對于java/Swing一直有著誤解,諸如:Java/Swing太慢了,或者是Java/Swing需要更多的內存。Swing也許在老式的奔騰的cpu而且只有32m內存運行JDK1.2運行起來卻是很慢。但是假如在PIII級別的CPU有著256mb的內存,運行JDK1。4環境是足夠快的。對于一個應用程序來說鼠標在1毫秒和在10毫秒的反映的區別,對于使用者來說看起來是,沒什么區別的。Java在企業級的數百人,上千人同時在線的服務器表現的很好。Java在對于有限資源的移動設備上的表現也是很出色的。那為什么Java不能成為很好的桌面應用程序呢?以我的觀點看,Swing的bug比其運行速度慢這問題還嚴重。例如,假如你用的是JDK 1.2,你將不能在表格(稱為JTable)中輸入%&'($#!q 等這些字符。這八個字符和箭頭鍵及Home, End, Pgup, and Pgdn這幾個鍵的鍵值是相同的。其中一個由JTable由到的類調用了KeyEvent.getCharCode()方法代替KeyEvent.getKeyCode()。這個bug這JDK 1.3已經得到了糾正。你大概已經放棄過Swing,假如你是從用JDK 1.2的Swing,你可能因為你不能在表格里輸入q而惱怒??赡懿恍业氖悄阏枰肑table開發一個Swing應用,你將花費許多時間從sun的bug數據庫中查找解決的辦法。但沒有發現你需要的(記住在那時Swing還是個新事物),你將花費更多的時間去看Swing的源代碼和發展中的工作區,經過了這個的經歷之后,很少有人很在另一個項目里再用Swing了,你的工作區會像下面這樣子:
  import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*;
  
  public class WorkingTable extends JTable { public static final boolean JDK12 = System.get  
  public void processKeyEvent(KeyEvent e) { if (JDK12) { char ch = e.getKeyChar(); if (e.getID() == KeyEvent.KEY_TYPED && ((33 <= ch && ch <= 40) ch == 'q')) { int anchorRow = getSelectionModel().getAnchorSelectionIndex(); int anchorColumn = getColumnModel() .getSelectionModel().getAnchorSelectionIndex(); if (anchorRow != -1 && anchorColumn != -1) { if (!isEditing()) editCellAt(anchorRow, anchorColumn); Component editorComp = getEditorComponent(); if (isEditing() && editorComp instanceof JTextField) { JTextField textField = (JTextField) editorComp; textField.setText(textField.getText() + ch); return; } } } } super.processKeyEvent(e); }
  
  }
  
  不幸的是,Swing有許多像上面描述的那樣的問題,一些問題很難解決,需要做大量的工作。例如,Swing的打開文件和保存文件的對話框是基于稱為JfileChooser的組件,它部分的執行了JDK 1.2和JDK 1.3(一些特性總是不能用的,要創建一個新的目錄對大多數用戶來是一個挑戰)。我不知道為什么Sun需要幾年的時間直到jdk1.4中才完成JfileChooser。在JDK 1.4之前,你有兩種選擇:用這種破爛的JfileChooser或是創建你自己的文件選擇框,Borland公司在他們的JBuilder 4中做一個很好的文件打開對話框。然而,大多數的開發者用的是標準的JfileChooser,給他們的用戶帶來許多問題。有一件重要的事情需要注重:可以像上面描述的那個去創建工作環境,因為Swing的源代碼是可以得到的。學習java源代碼也能夠讓你成為更好的程序員并且讓你理解工作在Java API的內部機制。當你開發你自己習慣的GUI組件,這點是有用

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区三区在线播放| 日韩在线视频国产| 欧美激情在线观看视频| 中文字幕精品久久久久| 欧美一级大胆视频| 亚洲一品av免费观看| 国产精品视频公开费视频| 国产精品扒开腿做爽爽爽的视频| 91超碰caoporn97人人| 国精产品一区一区三区有限在线| 亚洲欧美日韩成人| 欧美福利小视频| 亚洲男人天堂九九视频| 亚洲成avwww人| 久久久噜久噜久久综合| 91精品国产综合久久男男| 2019最新中文字幕| 久久99精品久久久久久琪琪| 成人黄色激情网| 亚洲精品国产电影| 国产精品成人品| 91在线无精精品一区二区| 国产一区二区日韩精品欧美精品| 久久成人亚洲精品| 国产黑人绿帽在线第一区| 国产精品96久久久久久| 久久的精品视频| 亚洲精品97久久| 久久青草精品视频免费观看| 亚洲男人的天堂网站| 日韩av网址在线观看| 91沈先生在线观看| 日韩av在线网站| 久久久久亚洲精品成人网小说| 亚洲老头老太hd| 国产精品精品视频一区二区三区| 亚洲最新av网址| 国产精品网站视频| 欧美另类第一页| 亚洲aa在线观看| 成人av色在线观看| 亚洲a成v人在线观看| 国产精品久久国产精品99gif| 久久天天躁夜夜躁狠狠躁2022| 国产精品免费视频久久久| 97在线日本国产| 国产精品网站视频| 2021久久精品国产99国产精品| 国产精品ⅴa在线观看h| 在线视频中文亚洲| 国产视频自拍一区| 亚洲精品动漫100p| 久久久人成影片一区二区三区观看| 国产精品精品视频一区二区三区| 国产精品国产三级国产aⅴ9色| 蜜臀久久99精品久久久无需会员| 奇米成人av国产一区二区三区| 亚洲午夜国产成人av电影男同| 欧美俄罗斯性视频| 91夜夜揉人人捏人人添红杏| 精品国产一区二区三区久久久| 久久久99久久精品女同性| 91精品国产高清久久久久久| 欧美国产日韩一区二区三区| 成人在线视频福利| 日韩高清有码在线| 岛国精品视频在线播放| 国产成人aa精品一区在线播放| 精品人伦一区二区三区蜜桃免费| 国产免费亚洲高清| 伊人激情综合网| 亚洲男人天堂古典| 亚洲视频在线播放| 亚洲美女久久久| 国产精品久久综合av爱欲tv| 国产一区二区黑人欧美xxxx| 丰满岳妇乱一区二区三区| 国产小视频国产精品| 久久精品99久久久久久久久| 国产精品h在线观看| 欧美成人免费在线观看| 国产视频福利一区| 亚洲人午夜色婷婷| 亚洲在线视频观看| 欧美日韩国产中文字幕| 日韩成人在线免费观看| 国产精品美女无圣光视频| 国产成+人+综合+亚洲欧美丁香花| 亚洲一区二区三区乱码aⅴ蜜桃女| 成人信息集中地欧美| 国产丝袜精品第一页| 欧美日本在线视频中文字字幕| 欧美精品情趣视频| 亚洲自拍偷拍视频| 国产日韩综合一区二区性色av| 97免费视频在线| 亚洲欧美另类自拍| 国产精品国产亚洲伊人久久| 伊人一区二区三区久久精品| 欧美成年人视频网站欧美| 57pao国产精品一区| 茄子视频成人在线| 日韩在线视频免费观看| 亚洲第一区中文99精品| 日韩精品欧美国产精品忘忧草| 亚洲精品久久久久中文字幕二区| 欧美日本精品在线| 国产成人精品午夜| 亚洲精品v欧美精品v日韩精品| xxxx性欧美| 97在线免费观看视频| 性日韩欧美在线视频| 国产情人节一区| 欧美日韩加勒比精品一区| 亚洲乱码国产乱码精品精天堂| 亚洲视屏在线播放| 日韩中文有码在线视频| 成人黄在线观看| 亚洲日本成人女熟在线观看| 久久久精品欧美| 欧美性极品xxxx娇小| 免费91麻豆精品国产自产在线观看| 欧美日韩国产专区| 日韩精品视频在线观看网址| 91av成人在线| 色妞在线综合亚洲欧美| 亚洲国产高潮在线观看| 亚洲人成免费电影| 福利二区91精品bt7086| 亚洲天堂开心观看| 97色伦亚洲国产| 亚洲va国产va天堂va久久| 久久亚洲精品国产亚洲老地址| 美女啪啪无遮挡免费久久网站| 国产精品69久久| 中文字幕亚洲专区| 亚洲精品99久久久久中文字幕| 97超视频免费观看| 亚洲91精品在线观看| 国产99久久精品一区二区永久免费| 国产精品一区久久久| www.日韩视频| 96精品视频在线| 欧美国产精品va在线观看| 久久久99久久精品女同性| 亚洲电影第1页| 亚洲一区二区三区久久| 久久天天躁狠狠躁夜夜躁2014| 亚洲va男人天堂| 在线日韩欧美视频| 北条麻妃在线一区二区| 国产精品无av码在线观看| 2019中文字幕在线观看| 国产精品一区专区欧美日韩| 久久亚洲国产成人| 亚洲欧美一区二区三区情侣bbw| 欧美另类在线播放| 夜夜狂射影院欧美极品| 国产在线观看不卡| 国产精品视频公开费视频| 国产精品小说在线| 日韩高清av在线| 2019中文字幕在线免费观看| 国产精品视频久久久久|