少妇伦子伦精品无吗,国产在线精品一区在线观看,精品久久久久久无码专区不卡,99久久免费国产精精品

Hero Circle Shape
Hero Moon Shape
Hero Right Shape
Imtoken下載地址|swt

Imtoken下載地址|swt

  • 作者: Imtoken下載地址
  • 2024-03-07 21:20:03

SWT: The Standard Widget Toolkit | The Eclipse Foundation

SWT: The Standard Widget Toolkit | The Eclipse Foundation

Skip to main content

Log in

Manage Cookies

Sponsor

EclipsePlatformSWTAbout Community MarketplaceEventsPlanet EclipseNewsletterVideosBlogsParticipate Report a BugForumsMailing ListsWikiIRCResearchEclipse IDE DownloadLearn MoreDocumentationGetting Started / SupportHow to ContributeIDE and ToolsNewcomer Forum

More

CommunityMarketplaceEventsPlanet EclipseNewsletterVideosBlogsParticipateReport a BugForumsMailing ListsWikiIRCResearchEclipse IDEDownloadLearn MoreDocumentationGetting Started / SupportHow to ContributeIDE and ToolsNewcomer Forum

Search

Toggle navigation

Breadcrumbs

HomeProjectsswt

SWT: The Standard Widget Toolkit

SWT is an open source widget toolkit for Java designed to provide efficient,

portable access to the user-interface facilities of the operating systems

on which it is implemented.

Welcome

Welcome to SWT! You may have come to this page looking for snippets (little code examples)

or examples (big code examples like ControlExample);

widget snapshots

or documentation.

Or maybe you want to request a feature,

report a bug,

or ask a question.

Whatever the reason, you will find many resources here. Enjoy!

Downloads

Latest Release

Download page

For links to latest released version of the SWT Binary and Source for all platforms, select the entry for the latest official release and then click on SWT Binary and Source from the menu on the left.

Stable Builds

Download page

For links to stable milestone builds of the SWT Binary and Source for all platforms, select the entry for the latest milestone build and then click on SWT Binary and Source from the menu on the left.

Integration Builds

Download page

For links to daily Integration builds of SWT Binary and Source for all platforms, select a current integration build

(select entry starting with I in the Integration builds) and then click on SWT Binary and Source from the menu on the left.

Maven Artifacts

SWT fragments for all the supported platforms are published to Maven Central for every release. The table below contains the links to the artifacts.

Windows

Mac/Cocoa

Linux/GTK (x86 64-bit)

Linux/GTK (ppcle 64-bit)

How to contribute

How to contribute a feature or bug fix to SWT

How to get the SWT source code via Git

How to setup SWT Windows native build environment

Articles

How to develop SWT applications in Eclipse

How to run the ControlExample and other SWT examples

How to deploy SWT applications on Mac OS X

How to generate the SWT JNI Code

How to generate the SWT JNI Code for Cocoa

Using OpenGL in SWT Applications

Many more articles about SWT on Eclipse Corner at eclipse.org

Full list of articles and documentation

Resources

SWT wiki

Widget screenshots with links to documentation

Snippets, helpful little code examples

Examples, helpful big code examples

The SWT FAQ answers many common questions

Tools and Plug-ins for SWT developers

Online Javadoc

Books and additional documentation

Test Plan for SWT

SWT Community Page

SWTBot, UI/functional testing tool for SWT and Eclipse based applications.

Eclipse/SWT Accessibility wiki

Contact Us

SWT development is discussed and tracked in the

Eclipse bugzilla under the

Platform/SWT component. You can subscribe to the new bug inbox by

watching platform-swt-inbox@eclipse.org from your

bugzilla email preferences.

If you are modifying or porting SWT and have questions, try the

SWT developer mailing list

[archive,

search].

SWT Home

Widgets

Snippets

Examples

FAQ

Tools

Javadoc

Documentation

Community

Bugs

Contact Us

Back to the top

Eclipse Foundation

About UsContact UsSponsorMembersGovernanceCode of ConductLogo and ArtworkBoard of DirectorsCareers

Legal

Privacy PolicyTerms of UseComplianceEclipse Public LicenseLegal Resources

Useful Links

Report a BugDocumentationHow to ContributeMailing ListsForumsMarketplace

Other

IDE and ToolsProjectsWorking GroupsResearch@EclipseReport a VulnerabilityService Status

Copyright ? Eclipse Foundation AISBL. All Rights Reserved.

Back to the top

【轉帖】Java圖形界面開發(fā):SWT全接觸-CSDN博客

>

【轉帖】Java圖形界面開發(fā):SWT全接觸-CSDN博客

【轉帖】Java圖形界面開發(fā):SWT全接觸

最新推薦文章于?2024-01-26 13:17:00?發(fā)布

msdnchina

最新推薦文章于?2024-01-26 13:17:00?發(fā)布

閱讀量1.6w

收藏

20

點贊數(shù)

2

分類專欄:

JAVA

文章標簽:

java

swt

JAVA

專欄收錄該內容

8 篇文章

0 訂閱

訂閱專欄

本文轉自:https://www.xuebuyuan.com/1457795.html

從Java誕生至今,已經在太多的領域取得成功,然而它卻很少在圖形界面程序上嶄露頭角。究其原因,Java語言缺省的圖形界面開發(fā)包AWT和SWING實在是難脫其究,無論速度和外觀,它們都難以讓人接受。如今,Eclipse組織編寫的SWT開發(fā)包,為Java程序員提供了AWT和SWING之外的一個更佳的選擇。在本文中,對SWT做了簡單但盡可能全面的介紹。

?

????????Java語言的聲望和它在桌面應用程序(GUI程序)所取得的成就顯然極不相符,至今仍然很少能看到非常成功Java桌面程序。雖然有JBuilder,Netbean,JProbe等大型軟件作為代表,但這仍不能證明Java的GUI程序是成功的:它們的外觀總是和同一操作系統(tǒng)平臺下的其它軟件顯得格格不入。對機器配置的需求也似乎永無止境,這使得它們只能被一些總是擁有當前最高性能PC的程序員們所容忍,或是那些不在乎金錢和時間的專業(yè)用戶所接受。對絕大多數(shù)計算機使用者來說,AWT或SWING代表著怪異的界面和無法接受的速度。Standard Widget Toolkit(SWT)或許是Java這一噩夢的終結者,廣大Java程序員終于可以開發(fā)出高效率的GUI程序,它們擁有標準的外觀,幾乎沒有人能看出你的程序是用Java寫出來的,更為重要的是,這些程序是跨平臺的。

????????SWT本身僅僅是Eclipse組織為了開發(fā)Eclipse IDE環(huán)境所編寫的一組底層圖形界面API?;蛟S是無心插柳,或是有意為之,至今為止,SWT無論是在性能和外觀上,都超越了SUN公司提供的AWT和SWING。目前Eclipse IDE已經開發(fā)到了2.1版本,SWT已經十分穩(wěn)定。這里指的穩(wěn)定應該包含兩層意思:

????????一是指性能上的穩(wěn)定,其中的關鍵是源于SWT的設計理念。SWT最大化了操作系統(tǒng)的圖形構件API,就是說只要操作系統(tǒng)提供了相應圖形的構件,那么SWT只是簡單應用JNI技術調用它們,只有那些操作系統(tǒng)中不提供的構件,SWT才自己去做一個模擬的實現(xiàn)??梢钥闯鯯WT性能上的穩(wěn)定大多時候取決于相應操作系統(tǒng)圖形構件的穩(wěn)定性。

????????另一個穩(wěn)定是指SWT API包中的類、方法的名稱和結構已經少有改變,程序員不用擔心由于Eclipse組織開發(fā)進度很快(Eclipse IDE每天都會有一個Nightly版本的發(fā)布),而導致自己的程序代碼變化過大。從一個版本的SWT更新至另一版本,通常只需要簡單將SWT包換掉就可以了。

?

第一個SWT程序

?

????????下面讓我們開始一個SWT程序。(注意:以下的例子和說明主要針對Windows平臺,其它的操作系統(tǒng)應該大同小異)。首先要在Eclipse安裝文件中找到SWT包,Eclipse組織并不提供單獨的SWT包下載,必須下載完整的Eclipse開發(fā)環(huán)境才能得到SWT包。SWT是作為Eclipse開發(fā)環(huán)境的一個插件形式存在,可以在${你的eclipse安裝路徑}/plugins路徑下的眾多子目錄下去搜索SWT.JAR文件,在找到的JAR文件中包含了SWT全部的Java類文件。因為SWT應用了JNI技術,因此同時也要找到相對應的JNI本地化庫文件,由于版本和操作平臺的不同,本地化庫文件的名稱會有些差別,比如SWT-WIN32-2116.DLL是Window平臺下Eclipse Build 2116的動態(tài)庫,而在Unix平臺相應版本的庫文件的擴展名應該是.so,等等。注意的是,Eclipse是一個開放源代碼的項目,因此你也可以在這些目錄中找到SWT的源代碼,相信這會對開發(fā)很有幫助。?

下面是一段打開空窗口的代碼(只有main方法)。

?

import com.e2one.example;

public class OpenShell{

public static void main(String [] args) {

Display display = new Display();

Shell shell = new Shell(display);

shell.open();

// 開始事件處理循環(huán),直到用戶關閉窗口

while (!shell.isDisposed()) {

if (!display.readAndDispatch())

display.sleep();

}

display.dispose();

}

}

確信在CLASSPATH中包括了SWT.JAR文件,先用Javac編譯例子程序。編譯無錯后可運行java -Djava.library.path=${你的SWT本地庫文件所在路徑} com.e2one.example.OpenShell,比如SWT-WIN32-2116.DLL件所在的路徑是C:/swtlib,運行的命令應該是java -Djava.library.path=c:/swtlib com.e2one.example.OpenShell。成功運行后,系統(tǒng)會打開了一個空的窗口。

?

剖析SWT API

?

????????下面再讓我們進一步分析SWT API的組成。所有的SWT類都用org.eclipse.swt做為包的前綴,下面為了簡化說明,我們用*號代表前綴org.eclipse.swt,比如*.widgets包,代表的是org.eclipse.swt.widgets包。

????????我們最常用的圖形構件基本都被包括在*.widgets包中,比如Button,Combo,Text,Label,Sash,Table等等。其中兩個最重要的構件當數(shù)Shell和Composite。Shell相當于應用程序的主窗口框架,上面的例子代碼中就是應用Shell構件打開一個空窗口。Composite相當于SWING中的Panel對象,充當著構件容器的角色,當我們想在一個窗口中加入一些構件時,最好到使用Composite作為其它構件的容器,然后再去*.layout包找出一種合適的布局方式。SWT對構件的布局也采用了SWING或AWT中Layout和Layout Data結合的方式,在*.layout包中可以找到四種Layout和與它們相對應的布局結構對象(Layout Data)。在*.custom包中,包含了對一些基本圖形構件的擴展,比如其中的CLabel,就是對標準Label構件的擴展,上面可以同時加入文字和圖片,也可以加邊框。StyledText是Text構件的擴展,它提供了豐富的文本功能,比如對某段文字的背景色、前景色或字體的設置。在*.custom包中也可找到一個新的StackLayout布局方式。

????????SWT對用戶操作的響應,比如鼠標或鍵盤事件,也是采用了AWT和SWING中的Observer模式,在*.event包中可以找到事件監(jiān)聽的Listener接口和相應的事件對象,例如常用的鼠標事件監(jiān)聽接口MouseListener,MouseMoveListener和MouseTrackListener,及對應的事件對象MouseEvent。

????????*.graphics包中可以找到針對圖片、光標、字體或繪圖的API。比如可通過Image類調用系統(tǒng)中不同類型的圖片文件。通過GC類實現(xiàn)對圖片、構件或顯示器的繪圖功能。

????????對不同平臺,Eclipse還開發(fā)了一些富有針對性的API。例如,在Windows平臺,可以通過*.ole.win32包很容易的調用ole控件,這使Java程序內嵌IE瀏覽器或Word、Excel等程序成為可能!

????????要進一步了解SWT的情況,可以在Eclipse IDE的幫助文檔中找到SWT的JavaDoc說明。當然最深入的了解莫過于去讀SWT的源代碼,這也正是開放源代碼項目對程序員的魅力所在!?

??????????????????????????????????????????????????????????????????????????????更復雜的程序

????????下面讓我們展示一個比上面例子更加復雜一些的程序。這個程序擁有一個文本框和一個按鍵,當用戶點擊按鍵的時候,文本框顯示一句歡迎信息。

????????為了文本框和按鍵有比較合理的大小和布局,這里采用了GradLayout布局方式。這種布局是SWT中最常用也是最強大的布局方式,幾乎所有的格式都可能通過GradLayout去達到。下面的程序也涉及到了如何應用系統(tǒng)資源(Color),以及如何釋放系統(tǒng)資源。

?

private void initShell(Shell shell) {

//為Shell設置布局對象

GridLayout gShellLay = new GridLayout();

shell.setLayout(gShellLay);

//構造一個Composite構件作為文本框和按鍵的容器

Composite panel = new Composite(shell,SWT.NONE);

//為Panel指定一個布局結構對象。這里讓Panel盡可能的占滿Shell,也就是全部應用程序窗口的空間。

GridData gPanelData = new

GridData(GridData.GRAB_HORIZONTAL|GridData.GRAB_VERTICAL|GridData.FILL_BOTH);

panel.setLayoutData(gPanelData);

//為Panel也設置一個布局對象。文本框和按鍵將按這個布局對象來顯示。

GridLayout gPanelLay = new GridLayout();

panel.setLayout(gPanelLay);

//為Panel生成一個背景色

final Color bkColor = new Color(Display.getCurrent(),200,0,200);

panel.setBackground(bkColor);

//生成文本框

final Text text = new Text(panel,SWT.MULTI|SWT.WRAP);

//為文本框指定一個布局結構對象,這里讓文本框盡可能的占滿Panel的空間。

GridData gTextData = new

GridData(GridData.GRAB_HORIZONTAL|GridData.GRAB_VERTICAL|GridData.FILL_BOTH);

text.setLayoutData(gTextData);

//生成按鍵

Button butt = new Button(panel,SWT.PUSH);

butt.setText("Push");

//為按鍵指定鼠標事件

butt.addMouseListener(new MouseAdapter(){

public void mouseDown(MouseEvent e){

//當用戶點擊按鍵的時候,顯示信息

text.setText("Hello SWT");

}

});

//當主窗口關閉時,會觸發(fā)DisposeListener。這里用來釋放Panel的背景色。

shell.addDisposeListener(new DisposeListener(){

public void widgetDisposed(DisposeEvent e) {

bkColor.dispose();

}

});

}

把這段代碼中的方法initShell()加入到第一個打開空窗口的例子中,得到的是一段能成功運行的完整GUI應用程序。運行方法可參考第一個例子。

?

系統(tǒng)資源的管理

?

????????在一個圖形化的操作系統(tǒng)中開發(fā)程序,都要調用系統(tǒng)中的資源,如圖片、字體、顏色等。通常這些資源都是有限的,程序員務必非常小心的使用這些資源:當不再使用它們時,就請盡快釋放,不然操作系統(tǒng)遲早會油盡燈枯,不得不重新啟動,更嚴重的會導致系統(tǒng)崩潰。

????????SWT是用Java開發(fā)的,Java語言本身的一大優(yōu)勢就是JVM的“垃圾回收機制”,程序員通常不用理會變量的釋放,內存的回收等問題。那么對SWT而言,系統(tǒng)資源的操作是不是也是如此?答案是一個壞消息,一個好消息。

????????壞消息是SWT并沒采用JVM的垃圾回收機制去處理操作系統(tǒng)的資源回收問題,一個關鍵的因素是因為JVM的垃圾回收機制是不可控的,也就是說程序員不能知道,也不可能做到在某一時刻讓JVM回收資源!這對系統(tǒng)資源的處理是致命的,試想你的程序希望在一個循環(huán)語句中去查看數(shù)萬張圖片,常規(guī)的處理方式是每次調入一張,查看,然后就立即釋放該圖片資源,而后在循環(huán)調入下一張圖片,這對操作系統(tǒng)而言,任何時刻程序占用的僅僅是一張圖片的資源。但如果這個過程完全交給JVM去處理,也許會是在循環(huán)語句結束后,JVM才會去釋放圖片資源,其結果可能是你的程序還沒有運行結束,操作系統(tǒng)已經宕掉。

????????但下面的好消息也許會讓這個壞消息變得無關緊要。對于SWT,只需了解兩條簡單的“黃金”法則就可以放心的使用系統(tǒng)資源!之所以稱為黃金法則,一是因為少,只有兩條,二是因為它們出奇的簡單。第一條是“誰占用,誰釋放”,第二條是“父構件被銷毀,子構件也同時被銷毀”。第一條原則是一個無任何例外的原則,只要程序調用了系統(tǒng)資源類的構造函數(shù),程序就應該關心在某一時刻要釋放這個系統(tǒng)資源。比如調用了

?

Font font = new Font (display, "Courier", 10, SWT.NORMAL);

那么就應該在不在需要這個Font的時候調用

?

font.dispose();

對于第二個原則,是指如果程序調用某一構件的dispose()方法,那么所有這個構件的子構件也會被自動調用dispose()方法而銷毀。通常這里指的子構件與父構件的關系是在調用構件的構造函數(shù)時形成的。比如,

?

Shell shell = new Shell();

Composite parent = new Composite(shell,SWT.NULL);

Composite child = new Composite(parent,SWT.NULL);

其中parent的父構件是shell,而shell則是程序的主窗口,所以沒有相應的父構件,同時parent又包括了child子構件。如果調用shell.dispose()方法,應用第二條法則,那么parent和child構件的dispose()方法也會被SWT API自動調用,它們也隨之銷毀。

對于這兩個法則,參考資料2中的文章有更加深入的介紹。

?

線程問題

?

????????在任何操作平臺的GUI系統(tǒng)中,對構件或一些圖形API的訪問操作都要被嚴格同步并串行化。例如,在一個圖形界面中的按鍵構件可被設成可用狀態(tài)(enable)或禁用狀態(tài)(disable),正常的處理方式是,用戶對按鍵狀態(tài)設置操作都要被放入到GUI系統(tǒng)的事件處理隊列中(這意味著訪問操作被串行化),然后依次處理(這意味著訪問操作被同步)。想象當按鍵可用狀態(tài)的設置函數(shù)還沒有執(zhí)行結束的時候,程序就希望再設置該按鍵為禁用狀態(tài),勢必會引起沖突。實際上,這種操作在任何GUI系統(tǒng)都會觸發(fā)異常。

????????Java語言本身就提供了多線程機制,這種機制對GUI編程來說是不利的,它不能保證圖形構件操作的同步與串行化。SWT采用了一種簡單而直接的方式去適應本地GUI系統(tǒng)對線程的要求:在SWT中,通常存在一個被稱為"用戶線程"的唯一線程,只有在這個線程中才能調用對構件或某些圖形API的訪問操作。如果在非用戶線程中程序直接調用這些訪問操作,那么SWTExcepiton異常會被拋出。但是SWT也在*.widget.Display類中提供了兩個方法可以間接的在非用戶線程的進行圖形構件的訪問操作,這是通過的syncExec(Runnable)和asyncExec(Runnable)這兩個方法去實現(xiàn)的。例如:

?

//此時程序運行在一個非用戶線程中,并且希望在構件panel上加入一個按鍵。

Display.getCurrent().asyncExec(new Runnable() {

public void run() {

Button butt = new Button(panel,SWT.PUSH);

butt.setText("Push");

}

});

方法syncExec()和asyncExec()的區(qū)別在于前者要在指定的線程執(zhí)行結束后才返回,而后者則無論指定的線程是否執(zhí)行都會立即返回到當前線程。

?

SWT的擴展:JFace

?

????????JFace與SWT的關系好比Microsoft的MFC與SDK的關系,JFace是基于SWT開發(fā),其API比SWT更加易于使用,但功能卻沒SWT來的直接。比如下面的代碼應用JFace中的MessageDialog打開一個警告對話框:

?

MessageDialog.openWarning(parent,"Warning","Warning message");

如果只用SWT完成以上功能,語句不會少于30行!

????????JFace原本是為更加方便的使用SWT而編寫的一組API,其主要目的是為了開發(fā)Eclipse IDE環(huán)境,而不是為了應用到其它的獨立應用程序。因此在Eclipse 2.1版本之前,很難將JFace API完整的從Eclipse的內核API中剝離出來,總是要多多少少導入一些非JFace以外的Eclipse核心代碼類或接口才能得到一個沒有任何編譯錯誤的JFace開發(fā)包。但目前Eclipse組織似乎已經逐漸意識到了JFace在開發(fā)獨立應用程序起到的重要作用,在正在開發(fā)的2.1版本中,JFace也開始變成了和SWT一樣的完整獨立的開發(fā)包,只是這個開發(fā)包還在變動中(筆者寫本文時,應用的Eclipse2.1M3版本)。JFace開發(fā)包的包前綴是以org.eclipse.jface開頭。JAR包和源代碼也和SWT一樣,也在${你的eclipse安裝路徑}/plugins路徑下去找。

????????對開發(fā)人員來說,在開發(fā)一個圖形構件的時候,比較好的方式是先到JFace包去找一找,看是不是有更簡潔的實現(xiàn)方法,如果沒有再用SWT包去自己實現(xiàn)。比如JFace為對話框提供了很好的支持,除了各種類型的對話框(比如上面用的MessageDialog,或是帶有Title欄的對話框),如要實現(xiàn)一個自定義的對話框也最好從JFace中的Dialog類繼承,而不是從SWT中的*.widget.Dialog繼承。

????????應用JFace中的Preference包中的類很容易為自己的軟件做出一個很專業(yè)的配置對話框。對于Tree、Table等圖形構件,它們在顯示的同時也要和數(shù)據(jù)關聯(lián),例如Table中顯示的數(shù)據(jù),在JFace中的View包中為此類構件提供了Model-View方式的編程方法,這種方法使顯示與數(shù)據(jù)分開,更加利于開發(fā)與維護。JFace中提供最多的功能就是對文本內容的處理。可以在org.eclipse.jface.text.*包中找到數(shù)十個與文本處理相關類。

?

與應用程序更近一步

?

????????Java程序通常是以class文件的方式發(fā)布的,運行class需要JRE或JDK的支持。這又是Java GUI程序的另一個致命的弱點,想象對一個面向廣大用戶的應用程序來說,無論你的程序功能有多簡單,或是你的代碼十分的精簡,你都不得不讓用戶去下載一個7、8M的JRE,那是多么令人沮喪的一件事。而且對程序員來說,Class通常意味著源代碼的暴露,反編譯的工具讓那些居心叵測的人輕易得到你的源代碼。雖然有很多對Class的加密方法,但那總是以犧牲性能為代價的。好在我們還有其它的方式可用:把Class編譯成exe文件!

????????參考資料3提供了應用GCJ將SWT編譯成exe文件的詳細方法。作為對那篇文章的補充,就是目前也可以通過下載Cygwin得到Windows下的GCJ。 Excelsior也是筆者曾經用過的一款很好的編譯器,唯一的遺憾就是它的價格!

????????通過SWT開發(fā)包,簡單、跨平臺、可靠等這些Java語言本身所具有的優(yōu)點正漸漸融合到圖形界面的應用程序開發(fā)中去。因此,我相信Java語言的另一扇成功之門正在逐漸打開。

參考資料:

http://www.e2one.com 極一軟件工作室應用SWT&JFace API開發(fā)出的企業(yè)實時通訊IM軟件,是SWT&JFace開發(fā)Standalone程序的范例。

http://www.eclipse.org/articles/swt-design-2/swt-design-2.html 這篇文章中詳細論述了SWT開發(fā)者應該如何管理系統(tǒng)資源。

http://www-900.ibm.com/developerWorks/cn/linux/guitoolkit/j-nativegui/index.shtml 描述了如何將SWT程序應用GCJ編譯成本機應用程序文件。

http://www-900.ibm.com/developerWorks/cn/java/l-eclipse/index.shtml 介紹了Eclipse的使用及簡單的插件開發(fā)過程。

www.eclipse.org 所有的關于Eclipse, SWT, JFace的問題都可以在這里找到答案。也是下載Eclipse開發(fā)環(huán)境的網站。

http://www.cygwin.com/ 可以得得到Windows版本的GCJ。

關于作者

倪大鵬,有多年的軟件開發(fā)經驗,其中近四年的時間集中在Java相關技術的研究。可以通過e-mail: ndp@e2one.com與他聯(lián)系。

『引自?IBM DW中國』?

優(yōu)惠劵

msdnchina

關注

關注

2

點贊

20

收藏

覺得還不錯?

一鍵收藏

知道了

0

評論

【轉帖】Java圖形界面開發(fā):SWT全接觸

本文轉自:https://www.xuebuyuan.com/1457795.html從Java誕生至今,已經在太多的領域取得成功,然而它卻很少在圖形界面程序上嶄露頭角。究其原因,Java語言缺省的圖形界面開發(fā)包AWT和SWING實在是難脫其究,無論速度和外觀,它們都難以讓人接受。如今,Eclipse組織編寫的SWT開發(fā)包,為Java程序員提供了AWT和SWING之外的一個更佳的選擇。在本文中...

復制鏈接

掃一掃

專欄目錄

Java SWT 圖形用戶界面教程 PDF

07-22

Java SWT 圖形用戶界面教程 PDF

Java SWT 圖形用戶界面教程 PDF

Java圖形化界面編程超詳細知識點(5)——Swing編程

m0_66908465的博客

04-05

9071

本篇文章主要介紹Java圖形化界面編程中Swing類庫的詳細知識點總結,方便大家在圖形化界面編程時快速找到自己所需要的方法,希望對大家完成課設有所幫助。

參與評論

您還未登錄,請先

登錄

后發(fā)表或查看評論

JAVA SWT table界面+數(shù)據(jù)(多圖)

華容道的博客

03-01

1萬+

界面

1.布局

選用兩個composite,

設置shell的Layout為FillLayout;

設置Layout-Type(布局類型)為垂直分布;

設置右滑塊,下滑塊;

2.添加table組件

上面的composite添加的是CheckboxTableViewer,下面的是普通的Table;

同樣需要設置兩個composite的Layout屬性為Fill...

JavaGUI開發(fā)之SWT框架【Shell】

最新發(fā)布

qq_62835094的博客

01-26

969

在SWT框架中,shell組件可以理解為窗口shell的創(chuàng)建需要指定Display()組件,因此shell的創(chuàng)建一般使用的都是如下代碼Display組件,負責連接OS操作系統(tǒng),同時負責管理GUI 組件。Display在SWT框架中有著舉足輕重的作用,但一般開發(fā)過程中,沒怎么調用過display的api,因此本文不會詳細介紹Display,感興趣的讀者可以自行查看文檔。Shell組件的處境也和Display差不多。本文主要介紹Shell的創(chuàng)建方式,以及不同的創(chuàng)建方式得到的不同樣式。

Eclipse的SWT Designer下載地址及安裝方法(詳細教程)

熱門推薦

catfishlyf的博客

12-21

1萬+

初次接觸SWT工程,打算用這個編寫一個記事本。跟著我一步步從無到有建立SWT工程吧!

Java界面 SWT基本組件——文本框(Text)

海上機械師

03-10

1萬+

SWT 中文本框(Text)的基本類型與基礎應用

文本框是常見的控件之一,是可以輸入文字的控件。

文本框有單行文本框()和多行文本框()兩種,包含可編輯的文本框與只讀的文本框

本次試驗通過一個小程序來說明一個文本框常用的方法。該程序類似編輯器的功能,具有對文本進行全選、使用剪貼板功能的復制和粘貼功能、

代碼如下:

shell.setSize(350, 283);

shell.setTex

“ODM OEM OBM的區(qū)別”網址匯總

yuuu_cheer的博客

02-19

2638

http://www.360doc.com/content/16/1111/19/37747301_605709484.shtml

https://blog.csdn.net/zhongbeida_xue/article/details/102591658

SWT的介紹(配置,打包步驟)

無若

07-27

3844

SWT的介紹(附加:Eclicpse3.1.1下配置SWT,打包發(fā)布SWT程序,轉EXE一條龍過程記錄)?一、SWT的介紹?(使用SWT在各個操作系統(tǒng)上的效果)?SWT(Standard Widget Toolkit)  Standard Widget Toolkit是一個開源的GUI編程框架,與AWT/Swing有相似的用處,著名的開源IDE-eclipse就是用SW

Eclipse下搭建SWT與Swing圖形界面開發(fā)環(huán)境

深之JohnChen的專欄

07-29

1萬+

Eclipse SWT Swing 圖形界面開發(fā)

Java中AWT、Swing與SWT三大GUI技術的原理與效率差異

遠方

09-27

2815

MineHe原創(chuàng)看了一下對Java GUI討論的帖子,所以寫了一篇文章來闡述一下各種GUI技術的優(yōu)劣。Java世界中,目前最知名的三大GUI庫分別是:1、AWT(Abstract Window Toolkit)抽象窗口工具包庫,包含于所有的Java SDK中2、Swing高級圖形庫,包含于Java2 SDK中3、來自IBM Eclipse開源項目的SWT(Standard Widget Toolk

JavaGUI——Swing組件基礎

weixin_46235428的博客

12-03

851

文章目錄一、面板組件二、文本框密碼框標簽組件三、單選框和復選框四、下拉框列表框滾動窗格組件五、多行文本框組件六、菜單欄組件七、流式布局八、網格布局九、邊界布局

一、面板組件

一個界面只可以有一個JFrame頂層容器,但是可以有多個JPanel面板組件,

而JPanel上也可以使用FlowLayout,BorderLayout,GridLayout等各種布局管理器,

這樣可以組合使用達到較為復雜的布局效果。

面板組件可以設置布局模式,實現(xiàn)多模式布局,但默認為流式布局。

面板組件里可以添加其他組件

代碼如下(

SWT/JFace(一)——概述

cole丶的博客

03-12

1711

一、SWT

1. 概述

SWT(Standard Widget Toolkit,標準圖形工具箱)是一種用java開發(fā)的GUI程序的技術。與出自Sun的AWT (Abstract Widget Toolkit,抽象圖形工具箱)和Swing不同,SWT是Eclipse的開發(fā)人員自行建造的。它無論在界面美觀度上還是在性能上都遠遠超越了AWT和Swing,即使和操作系統(tǒng)上的本地圖形界面程序相比也毫不遜色,...

【SWT】創(chuàng)建自己的SWT組件

小子寶丁的博客

08-08

1239

本文為部分譯文,交代了兩種方法創(chuàng)建SWT小組件

SWT 全接觸

hangke的專欄

10-25

1008

?Java 世界的人似乎一直都對 Java 的桌面應用程序十分不滿,從 AWT 到 SWING,從默認的 Theme到第三方的產品,不是太難看(AWT)就是在某些平臺有 BUG(SWING,Quaqua--一個Windows平臺下的仿Mac的主題包),再不就是對中文支持不好(某些第三方 LookAndFeel)。于是,如果想要獲得和本機平臺一致的用戶界面和比較穩(wěn)定的性能,SWT就成

SWT介紹 -jobslong

weixin_30902675的博客

04-05

70

---恢復內容開始---

SWT介紹

  說明:為了達到更好的閱讀效果,請點擊以下鏈接,我們的dropbox里面下載pdf或者word文件,我們?yōu)槊恳粋€blog都生成了相關的文件,如果你需要相關的軟件也可以在評論留言,我可以上傳供大家下載;

  https://www.dropbox.com/home用戶名:jobslongblogs@gmail.com 密碼:com.gmail@jobs...

swing,swt之爭(jvm和JNI相對于本地方法和遠程方法)

sole_ghost的專欄

04-14

2241

1.正方 SWT優(yōu)于Swing  Java語言的聲望和它在桌面應用程序(GUI程序)所取得的成就顯然極不相符,至今仍然很少能看到非常成功Java桌面程序。雖然有JBuilder,Netbean,JProbe等大型軟件作為代表,但這仍不能證明Java的GUI程序是成功的:它們的外觀總是和同一操作系統(tǒng)平臺下的其它軟件顯得格格不入。對機器配置的需求也似乎永無止境,這使得它們只能被一些總是擁有當前最高性能

SWT概述二

longcxm1的博客

01-31

398

SWT技術是第一套基于java的第三方的圖形工具庫。它的設計思想是提供一套通用的API,使得開發(fā)出的圖形程序不僅可以不加修改地在平臺間移植,而且在外觀上和速度上能與使用C/C++等語言在操縱系統(tǒng)平臺上開發(fā)出來的本地圖形程序毫無差別。

當一個布局管理器被安裝到窗口上時,它就負責安排窗口中各個控件的位置和尺寸。當窗口尺寸發(fā)生變化時,布局管理器會根據(jù)一定的策略重新計算這些數(shù)據(jù),并將控件...

org.eclipse.swt.win32的64位jar包

05-30

org.eclipse.swt.win32的64位jar包,不是32位的;之前網上下了個32位的,不能用。

[總結]對JFace的一點總結

李上網來 Blog

03-07

2870

最近研究了一下JFace,下面寫點總結,備忘。

?

先簡單介紹一下JFace:

基于Java的圖形庫最主要的有三種,它們分別是AWT、Swing和SWT;它們產生的時間大體如下:

AWT(abstract windowing toolkit,1995年,隨JDK一起,SUN公司) --->Swing(JFC, java foundation classes, 1997年,隨JDK一起,su

運放參數(shù)的詳細解釋和分析-轉帖TI工作人員的資料(doc版)

07-27

在TI論壇看到的帖子,感覺挺好,就整理成word文檔了,內容主要是運放datasheet常見參數(shù)的解釋和分析。TI原帖地址“http://www.deyisupport.com/question_answer/analog/amplifiers/f/52/t/20214.aspx”...感謝原作者。

“相關推薦”對你有幫助么?

非常沒幫助

沒幫助

一般

有幫助

非常有幫助

提交

msdnchina

CSDN認證博客專家

CSDN認證企業(yè)博客

碼齡21年

暫無認證

758

原創(chuàng)

1萬+

周排名

46萬+

總排名

462萬+

訪問

等級

5萬+

積分

384

粉絲

254

獲贊

165

評論

880

收藏

私信

關注

熱門文章

linux下查看網卡信息的命令

108757

windows下 sqlplus / as sysdba 報ora-12560的終極解決方法

63333

使用netstat查看tcp連接、udp連接

41337

red hat官方的rhel操作系統(tǒng)版本號與內核版本號的對應關系

38746

檢查docker版本的兩個命令

38145

分類專欄

DPU

1篇

OceanBase

1篇

PostgreSQL數(shù)據(jù)庫

105篇

PG13配置參數(shù)

2篇

vagrant

1篇

UOS

1篇

tidb

2篇

龍芯

1篇

19c

1篇

Oracle DB 12c新特性

41篇

Oracle GoldenGate

28篇

MOS文章翻譯

86篇

HVR數(shù)據(jù)復制軟件

8篇

InfiniBand相關技術

21篇

Oracle GoldenGate

101篇

OS

30篇

Oracle DB

773篇

DB2

10篇

MS SQL Server

17篇

PostgreSQL

214篇

Windows

117篇

HP-UX

22篇

Linux

295篇

AIX

34篇

Oracle DB 12c

64篇

Solaris

13篇

dtp

1篇

HVR

9篇

RHEL7

434篇

RHEL6

117篇

RHEL5

68篇

OL7

93篇

OL6

48篇

虛擬化

6篇

InfiniBand相關技術

32篇

GreenPlum

docker

20篇

PGXC

2篇

Monitor

1篇

JAVA

8篇

ARM?Base

2篇

RHEL8

219篇

python

7篇

Kubernetes

1篇

PostgreSQL 12

2篇

Oracle Linux 8

11篇

最新評論

How to force xfs filesystem to shutdown?

Cat_yy9:

您好,麻煩問下,這問題解決了咩~

windows下 sqlplus / as sysdba 報ora-12560的終極解決方法

whitesails:

sqlplus /@數(shù)據(jù)庫的SID as sysdba 這樣可以了

獲得Windows主機的主機序列號

laidone:

SerialNumber

Default string??

DIX技術和T10 PI技術

weixin_42995907:

T10 PI格式化可以用哪些軟件

一個有用的技術網站

靜&慢&遠:

進不去了

您愿意向朋友推薦“博客詳情頁”嗎?

強烈不推薦

不推薦

一般般

推薦

強烈推薦

提交

最新文章

PostgreSQL中的大寫列名

2021中國DPU行業(yè)發(fā)展白皮書

OceanBase的bilibili

2022年1篇

2021年24篇

2020年30篇

2019年515篇

2018年200篇

2017年279篇

2016年297篇

2015年433篇

2014年166篇

2011年27篇

2010年7篇

目錄

目錄

分類專欄

DPU

1篇

OceanBase

1篇

PostgreSQL數(shù)據(jù)庫

105篇

PG13配置參數(shù)

2篇

vagrant

1篇

UOS

1篇

tidb

2篇

龍芯

1篇

19c

1篇

Oracle DB 12c新特性

41篇

Oracle GoldenGate

28篇

MOS文章翻譯

86篇

HVR數(shù)據(jù)復制軟件

8篇

InfiniBand相關技術

21篇

Oracle GoldenGate

101篇

OS

30篇

Oracle DB

773篇

DB2

10篇

MS SQL Server

17篇

PostgreSQL

214篇

Windows

117篇

HP-UX

22篇

Linux

295篇

AIX

34篇

Oracle DB 12c

64篇

Solaris

13篇

dtp

1篇

HVR

9篇

RHEL7

434篇

RHEL6

117篇

RHEL5

68篇

OL7

93篇

OL6

48篇

虛擬化

6篇

InfiniBand相關技術

32篇

GreenPlum

docker

20篇

PGXC

2篇

Monitor

1篇

JAVA

8篇

ARM?Base

2篇

RHEL8

219篇

python

7篇

Kubernetes

1篇

PostgreSQL 12

2篇

Oracle Linux 8

11篇

目錄

評論

被折疊的??條評論

為什么被折疊?

到【灌水樂園】發(fā)言

查看更多評論

添加紅包

祝福語

請?zhí)顚懠t包祝福語或標題

紅包數(shù)量

紅包個數(shù)最小為10個

紅包總金額

紅包金額最低5元

余額支付

當前余額3.43元

前往充值 >

需支付:10.00元

取消

確定

下一步

知道了

成就一億技術人!

領取后你會自動成為博主和紅包主的粉絲

規(guī)則

hope_wisdom 發(fā)出的紅包

實付元

使用余額支付

點擊重新獲取

掃碼支付

錢包余額

0

抵扣說明:

1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。 2.余額無法直接購買下載,可以購買VIP、付費專欄及課程。

余額充值

swt_百度百科

百度百科 網頁新聞貼吧知道網盤圖片視頻地圖文庫資訊采購百科百度首頁登錄注冊進入詞條全站搜索幫助首頁秒懂百科特色百科知識專題加入百科百科團隊權威合作下載百科APP個人中心收藏查看我的收藏0有用+10swt播報討論上傳視頻編程框架SWT(Standard Widget Toolkit) 是一個開源的GUI編程框架,與AWT/Swing有相似的用處,著名的開源IDE-eclipse就是用SWT開發(fā)的。 在SWT之前,Sun已經提供了一個跨平臺GUI開發(fā)工具包AWT (Abstract Windowing Toolkit).AWT框架底層使用原生窗口部件(native widgets)構建,只能使用各個平臺窗口部件的子集。外文名swt屬????性編程框架作????用與AWT/Swing有相似的用處目錄1基本介紹2Releases基本介紹播報編輯SWT: The Standard Widget ToolkitSWT是一個開放源碼的Java小部件工具包,旨在提供高效、可移植的用戶界面設施的訪問,在其上實現(xiàn)的操作系統(tǒng)。Releases播報編輯發(fā)布內容穩(wěn)定性Windows, Linux, OS X,more...4.3 Final Release - 5 June 2013發(fā)展內容4.4 集成構建對于所有平臺的SWT二進制和源代碼的鏈接。選擇當前的4.4集成版,然后滾動到頁面底部。新手上路成長任務編輯入門編輯規(guī)則本人編輯我有疑問內容質疑在線客服官方貼吧意見反饋投訴建議舉報不良信息未通過詞條申訴投訴侵權信息封禁查詢與解封?2024?Baidu?使用百度前必讀?|?百科協(xié)議?|?隱私政策?|?百度百科合作平臺?|?京ICP證030173號?京公網安備110000020000

JVM桌面框架的狀態(tài):SWT - 知乎

JVM桌面框架的狀態(tài):SWT - 知乎切換模式寫文章登錄/注冊JVM桌面框架的狀態(tài):SWT君慕賢什么是SWT?SWT源自Eclipse項目,最初是IDE。開發(fā)人員為Eclipse建立了一個專用框架,用于在其中構建其圖形組件。Swing和SWT的設計差異很大。Swing從頭開始用Java實現(xiàn)小部件的繪制。SWT是依賴本地圖形對象的精簡包裝API。這有兩個主要好處:窗口小部件看起來是平臺固有的。渲染速度更快。SWT APISWT背后有一個指導原則:因為它依賴于本機圖形對象,所以每個組件都需要一個“父”對象作為其第一個參數(shù)。父對象是繪制子對象的對象。每個SWT組件的構造函數(shù)都將父級作為其第一個參數(shù)。SWT的樂趣SWT具有一些特性,其中大多數(shù)與基于系統(tǒng)庫的設計有關。原生依賴性SWT為每個主流操作系統(tǒng)(例如Windows,Mac OSX等)提供JAR。例如,這是筆記本電腦的Maven依賴項:

org.eclipse.platform

org.eclipse.swt.cocoa.macosx.x86_64

3.114.100

runtime

JAR坐標取決于平臺。它們包含JNI綁定形式的必需本機庫。僅在運行時需要JAR。SWT事件控制回路Swing提供了一個開箱即用的事件控制循環(huán)。SWT并非如此。我們需要將以下代碼復制粘貼到我們的每個應用程序中:SWT與操作系統(tǒng)之間的橋梁。創(chuàng)建頂層窗口。顯示它。盡管該系統(tǒng)的窗口本機資源尚未釋放。處理排隊的事件。如果什么也不需要做…什么都不做。釋放所有系統(tǒng)本機資源。無參構造函數(shù)窗口和對話框Shell在SWT中均表示為實例。頂級窗口不需要父級,因此Shell提供了一個無參數(shù)的構造函數(shù)。但是由于Shell是圖形控件,因此其所有父類也都提供了這樣的構造函數(shù)。這些構造函數(shù)的主體為空,調用它們不會執(zhí)行任何操作。組件創(chuàng)建順序在父對象上實例化組件的順序就是將它們添加到該父對象的布局中的順序。如果需要將它們分離,則需要發(fā)揮創(chuàng)造力, 例如。將對構造函數(shù)的調用包裝在lambda中。這是一個SWT示例,按此順序顯示標簽,文本字段和按鈕:造型如上一片段所示,小部件的樣式在其實例化期間發(fā)生。這些樣式SWT以樣式位的形式編碼在類中:LEAD = 1 << 14LEFT = LEADSINGLE = 1 << 2BORDER = 1 << 11PUSH = 1 << 3等等循環(huán)依賴請注意,的構造函數(shù)Control采用一個Composite實例,該實例本身是的子類Control。這種循環(huán)依賴關系綁定到同一包中。顯示表格數(shù)據(jù)SWT僅關注小部件及其渲染。與Swing和JavaFX相對,它沒有數(shù)據(jù)模型的概念:您需要自己管理數(shù)據(jù)。對于0-D數(shù)據(jù)(例如文本字段),甚至對于1D數(shù)據(jù)(例如列表框),它都可以管理。對于二維數(shù)據(jù)(即表),這很麻煩。因此,大多數(shù)圖形框架在組件與其管理的數(shù)據(jù)之間引入了模型抽象。例如,Swing具有JTable和TableModel。Eclipse提供了JFace庫,該庫通過SWT API等提供了數(shù)據(jù)模型抽象。例如,對于表,JFace具有TableViewer類。每個JFace查看器類的核心都包含一個SWT控件。包裝在很深的層次上適用:SWTTableColumn被JFace的包裝TableColumnViewer。本Viewer類具有豐富的類型層次來處理不同尺寸的數(shù)據(jù)。IStructuredContentProvider提供多行數(shù)據(jù),例如表中的數(shù)據(jù)。由于API是在泛型之前設計的,因此需要在StructuredViewer級別上進行運行時檢查以驗證set的類型IContentProvider。此外,StructuredViewer還提供了排序,過濾和“裝飾”功能。注意,有一個庫可以管理模型和控件之間的雙向數(shù)據(jù)綁定:JFace Data Binding。我找不到兼容的版本。結論不可否認SWT的成功。從使用它開發(fā)的軟件項目數(shù)量中可以看出這一點。SWT提供了完全本地的外觀GUI。從好的方面來說,這意味著應用程序具有本機行為。另一方面,與此功能相關的成本:對平臺庫的依賴,這違反了“一次編譯,隨處運行”的承諾。由于缺少泛型,因此運行時檢查而不是編譯時檢查。由于上述兩個原因,API有時會顯得笨拙。原文作者:didiao java原文鏈接:https://blog.csdn.net/weixin_46699878/article/details/113420613文章來源:CSDN侵刪發(fā)布于 2021-01-30 14:08JavaswtJava 程序員?贊同 1??添加評論?分享?喜歡?收藏?申請

Java中AWT、Swing與SWT三大GUI技術的原理與效率差異_swt和awt-CSDN博客

>

Java中AWT、Swing與SWT三大GUI技術的原理與效率差異_swt和awt-CSDN博客

Java中AWT、Swing與SWT三大GUI技術的原理與效率差異

最新推薦文章于?2024-01-26 12:41:56?發(fā)布

光_影

最新推薦文章于?2024-01-26 12:41:56?發(fā)布

閱讀量2.1w

收藏

26

點贊數(shù)

5

看了一下對Java GUI討論的帖子,所以寫了一篇文章來闡述一下各種GUI技術的優(yōu)劣。 Java世界中,目前最知名的三大GUI庫分別是: 1、AWT(Abstract Window Toolkit)抽象窗口工具包庫,包含于所有的Java SDK中 2、Swing高級圖形庫,包含于Java2 SDK中 3、來自IBM Eclipse開源項目的SWT(Standard Widget Toolkit)標準窗口部件庫,不包含于JDK中,需要從Eclipse單獨下載一、AWT的原理:小巧卻簡陋的GUI系統(tǒng) AWT出現(xiàn)于Java 1.x中,是Java初期所內置的一種面向窗口應用的庫。AWT使用的技術是對等設計模式(即Peer),其結構關系參見下圖。 從這幅類關系圖很容易看出AWT的技術實現(xiàn)和Peer設計模式。圖中,黃色的類是java.awt包中的類,淺灰色部分是Java虛擬機部分,而深灰色則是Windows平臺。 awt的重點是對等Peer設計模式。所謂Peer對等設計模式就是將awt控件直接對應到運行平臺上的一個類似或者等同控件上。比如圖中的Button類就是對應了深灰色的Windows的標準Button功能。 對等模式用于在兩個控件間之間建立一個相互作用的聯(lián)系,而充當紐帶的則是Java虛擬機和虛擬機-GDI的接口(以Windows為例子)。所以,我們可以看出,awt首先需要經過通用的Java技術來控制圖形、事件等,然后Java虛擬機再將請求傳送到具體的平臺圖形和控件接口去交互。 對等模式的效率并不很高,因為AWT通過了虛擬機和虛擬機-GDI這兩個層次來完成一個操作,經過的層次系統(tǒng)越多,速度和效率就越慢。而且Peer對等模式有一個致命的弱點:移植性非常差! 這就是Sun為什么要用Swing來誘惑我們離開AWT的主要原因。因為既然是對等模式,那么AWT就必須使用所有圖形操作系統(tǒng)的圖形接口功能的交集,因為 AWT的接口只有一套,所以,為了保證移植性,就只能使用所有系統(tǒng)都能夠支持的最少特性。因而我們經常可以聽見有人抱怨AWT的功能太少,圖形太難看等等,這是為了保證移植性而作出的犧牲。二、猛犸巨獸的誕生-Swing 從Java2 即Java 1.2版本開始,Sun開始在JDK中提供一套新的圖形界面接口系統(tǒng)-Swing。所有Java愛好者都投入了對Swing的研究和迷戀。隨著一大批使用Swing作為界面技術的IDE和程序出現(xiàn),很快大家都意識到Swing的問題所在。 一些人認為Swing是輕量級的GUI系統(tǒng),無論官方如何說,沒有一個Java程序員會認為Swing是輕量級的,相反,Swing是一個非常巨大的GUI庫,這一點已經是Java界的共識。 Swing的一些底層類是借用了AWT的Component、Container、Window等少數(shù)幾個基礎類。估計的原因是為了保持與AWT的兼容,方便大家將代碼移植到Swing上。 下面是Swing的類關系圖: 菊黃色類為Swing包的類。對比一下Swing的圖與AWT的圖,我們可以發(fā)現(xiàn),Swing圖中,awt體系中的深灰色Windows控件類已經被去掉了。因為Swing不再沿用Peer對等模式來實現(xiàn)GUI界面。 這是Swing的核心思想之一,Swing是完全基于Java自繪制圖形而實現(xiàn)的,因而Swing的界面看起來與Windows不再有任何類似,尤其是窗口控件的樣式(雖然我們也可以通過換膚來達到模擬Windows界面的效果)。所以上圖清楚的表明了Swing是一個高層的GUI系統(tǒng),而不像AWT那樣與運行平臺技術更加靠近的系統(tǒng)。我們仍然用Button與Panel來做了一個例子,圖中關系看出,Swing的類繼承關系比AWT要復雜的多,而且Swing類大多都經過了中間的轉接類-JComponent。而我們常用的JFrame則另辟蹊徑,從awt的window繼承了下來。 這種結構關系決定了Swing的龐大與復雜性。很多初學者都難以理解Swing的模式和結構。 Swing 中的控件都是利用Java圖形功能繪制出來的,而不是對應到平臺的一個具體控件實現(xiàn)。我們所用的所有Swing控件都是直接或者間接用Graphics繪制出來的,這種實現(xiàn)方式最大的好處是很靈活,我們想要什么樣的控件,就直接用Graphics繪制出來就是了。 Sun之所以用這種方式來實現(xiàn),是為了在不犧牲移植性的基礎上加入豐富的界面交互功能。但是缺點也很明顯:Swing的速度和效率是所有GUI系統(tǒng)中最慢的。 JBuilder和NetBeans的IDE都是純正的Swing界面,啟動一下,然后操作一下,比如拖動窗口之類的試試,你就會明白我在說什么。 之所以導致這個結果,其原因是: 1、Swing的類層次太深,一個JFrame經過了4層的類繼承關系,如果再加上虛擬機的圖形功能內部實現(xiàn),就有6層的轉接關系,每一次的繼承和轉接都會消耗系統(tǒng)資源和速度損失。(過多的繼承會降低系統(tǒng)的速度,因為操作子類往往是使用基類指向來完成通用操作的) 2、Swing是基于自繪制圖形技術的,而Java為了保持可移植性,所以無法使用硬件加速和平臺特性來加快圖形操作的速度。因而Java的圖形技術都是“高層”的圖形技術,就好像我們用Windows GDI去做動畫一樣,當然速度會很慢。三、新的曙光-SWT 應該說,稍有閱歷的Java的程序員都知道很多人對Swing效率低下的抱怨。IBM贊助的Eclipse開放源碼項目,搞了一個另類的GUI系統(tǒng)-SWT。 SWT是一個非常獨特的技術,其核心思想和Windows上的DirectX如出一轍,也許SWT的程序員真的是借鑒了DirectX成功的秘訣。 下面是SWT技術原理的類關系圖:

?

我們會看見,SWT的類關系非常直接而且易懂,有點像Delphi的API接口思想(此是我隨便亂彈,與Delphi沒有什么關系)。最重要的一點就是SWT的核心思想:SWT的功能實現(xiàn)是完全構筑在以JNI為基礎的,對運行平臺的直接調用封裝上的。 我們可以從圖中看見,SWT的功能沒有通過任何Java虛擬機來操作,而是直接調用Windows GDI和Shell功能,這一點是通過JNI方法調用完成。 一定會有人說SWT破壞了java的移植思想,不過Eclipse的大范圍流行,正好證明了SWT非但沒有阻礙移植性,反而提高了各種操作系統(tǒng)對于Java GUI的利用和期待。這不能不說Eclipse項目組是充滿智慧的。 在Eclipse下,plugin目錄的swt目錄下,你可以發(fā)現(xiàn)一個dll動態(tài)庫文件,這個dll就是JNI方法調用庫。 基于SWT技術實現(xiàn)的Eclipse界面不但速度很快,效率很高,而且比Swing要美觀的多。這就是直接調用封裝的效果。 我們看看SWT的源代碼就能更加明白為什么SWT那么流行,為什么SWT的速度像飛一樣快,下面是從button類中抽取的一小段代碼: ?

代碼:

int callWindowProc (int msg, int wParam, int lParam) {? ?if (handle == 0) return 0; ?return OS.CallWindowProc (ButtonProc, handle, msg,?wParam, lParam); } int windowProc () {? ?return ButtonProc; } LRESULT wmDrawChild (int wParam, int lParam) {? ?if ((style & SWT.ARROW) == 0) return super.wmDrawChild (wParam, lParam); ?DRAWITEMSTRUCT struct = new DRAWITEMSTRUCT (); ?OS.MoveMemory (struct, lParam, DRAWITEMSTRUCT.sizeof); ?int uState = OS.DFCS_SCROLLLEFT; ?switch (style & (SWT.UP | SWT.DOWN | SWT.LEFT | SWT.RIGHT)) {? ? ?case SWT.UP: uState = OS.DFCS_SCROLLUP; break; ? ?case SWT.DOWN: uState = OS.DFCS_SCROLLDOWN; break; ? ?case SWT.LEFT: uState = OS.DFCS_SCROLLLEFT; break; ? ?case SWT.RIGHT: uState = OS.DFCS_SCROLLRIGHT; break; ?} ?if (!getEnabled ()) uState |= OS.DFCS_INACTIVE; ?if ((style & SWT.FLAT) == SWT.FLAT) uState |= OS.DFCS_FLAT; ?if ((struct.itemState & OS.ODS_SELECTED) != 0) uState |= OS.DFCS_PUSHED; ?RECT rect = new RECT (); ?OS.SetRect (rect, struct.left, struct.top, struct.right, struct.bottom); ?OS.DrawFrameControl (struct.hDC, rect, OS.DFC_SCROLL, uState); ?return null; } ?

我想任何一個有點Windows編程知識的人都會驚訝SWT的方式和做法,LRESULT、WindowProc都是做什么的,我想不用我多說了。我第一次看見SWT的代碼時,驚訝的張大了嘴,我實在無法想象SWT項目組敢于將Java技術與Windows平臺結合到如此緊密(當然,Linux平臺版本也同樣的結合緊密)。我居然在SWT里發(fā)現(xiàn)了一個叫Tray的類,猜猜看它是干什么的?Tray可以讓你在java程序中顯示一個任務欄圖標,極度暈眩! 我想,不用再繼續(xù)介紹SWT了,你一定也很興奮,從SWT開始,JavaGUI并不一定意味著緩慢、低效率、弱小的功能,Windows程序的眩目與速度,Java程序也可以擁有,這就是SWT的價值。 更加重要的是,SWT打破了長久以來人們對于移植性的誤區(qū),似乎移植性就只能使用少到可憐的功能,我們也可以用JNI來擁抱Java的世界,我想,將來不僅僅是界面會借助JNI的方式,也許我們的很多Java思想都會悄悄的發(fā)生改變,也許有一天我們的Java代碼可以運行的像VB一樣快,這種思想意識的變革就是SWT的價值。

至于Swing的結局,我不知道,但是我知道我更加喜歡輕量級的而且快速的SWT,給你的程序多一個選擇吧。

優(yōu)惠劵

光_影

關注

關注

5

點贊

26

收藏

覺得還不錯?

一鍵收藏

知道了

4

評論

Java中AWT、Swing與SWT三大GUI技術的原理與效率差異

看了一下對Java GUI討論的帖子,所以寫了一篇文章來闡述一下各種GUI技術的優(yōu)劣。Java世界中,目前最知名的三大GUI庫分別是:1、AWT(Abstract Window Toolkit)抽象窗口工具包庫,包含于所有的Java SDK中2、Swing高級圖形庫,包含于Java2 SDK中3、來自IBM Eclipse開源項目的SWT(Standard Widget Toolkit)標...

復制鏈接

掃一掃

SWT Swing與AWT區(qū)別

02-13

本文對 Eclipse 的 Standard Windows Toolkit with JFace、Java 的 Swing 和 Abstract Windows Toolkit GUI 工具包進行了比較。通過此處提供的比較,您可以確定在自己的新應用程序中應該使用哪個 GUI 工具包。

在大部分情況中,決定都是在 Swing 與結合了 JFace 的 SWT 之間進行的。通常來說,每個工具包都非常完整且功能強大,足以構建功能完善的 GUI,但是 Swing 通常要比單獨使用 SWT(不使用 JFace 時)更好。Swing 具有內嵌于 Java 技術的優(yōu)點,是完全可移植的,無可爭議地是一種更好的架構。Swing 也具有高級圖形應用程序所需要的優(yōu)點。SWT 具有可以作為本地應用程序實現(xiàn)的優(yōu)點,這可以提高性能,并利用基于 SWT 的 GUI 來實現(xiàn)本地兼容性。

如果您只為一種平臺來開發(fā)系統(tǒng),那么 SWT 就具有主機兼容性方面的優(yōu)點,包括與主機特性的集成,例如在 Windows 上對 ActiveX 控件的使用。

JAVA_SWT_TEST.rar_SWT_WIDGET_awt_java swt_java 工具箱

09-23

標準窗口小部件工具箱的 Java 二維作圖 SWT (標準窗口小部件工具箱,Standard Widget Toolkit)是在 Eclipse 平臺上使用的窗口小部件工具箱。它也可以作為 Swing/AWT 的一個重要替代產品,用于構建任何類型的 Java GUI 應用程序。

4?條評論

您還未登錄,請先

登錄

后發(fā)表或查看評論

前端同時傳遞文件數(shù)據(jù)+非文件數(shù)據(jù),前后端解決方案

最新發(fā)布

qq_62835094的博客

01-26

397

之前錄制視頻《文件上傳組件》的時候有位觀眾提了個問題,如果我沒有理解錯的話,應該就是前后同時傳遞文件數(shù)據(jù)非文件數(shù)據(jù),前后端數(shù)據(jù)該如何接收,這里我給出我自己的解決方案tip:下文在編寫前端代碼的時候,用到了這篇文章寫的組件。

Java GUI SWT/Swing/AWT的介紹及比較

11-07

本文通過對 Eclipse 的 SWT 和 Java Swing、Abstract Windows Toolkit(AWT)GUI 工具包進行比較,可以幫助新應用程序的開發(fā)人員從中選擇適當?shù)墓ぞ摺?

您可以通過本文了解對每個工具包的基本特性的介紹,以及使用每個工具包的優(yōu)缺點。

AWT 、Swing、SWT的區(qū)別與比較(網摘)

zhangmingji的專欄

10-22

405

??????AWT

????? AWT 是Abstract Window ToolKit (抽象窗口工具包)的縮寫,這個工具包提供了一套與本地圖形界面進行交互的接口。AWT 中的圖形函數(shù)與操作系統(tǒng)所提供的圖形函數(shù)之間有著一一對應的關系,我們把它稱為peers。 也就是說,當我們利用 AWT 來構件圖形用戶界面的時候,我們實際上是在利用操作系統(tǒng)所提供的圖形庫。由于不同操作系統(tǒng)的圖形庫所提供的功能是...

【UI編程】Java AWT/Swing/SWT/JavaFX雜談

一段曲折的旅程,一個艱難的人生

11-16

2387

Java界面編程粗略介紹,解開Java是否合適做桌面重程序的心結。

1.初識GUI、AWT、Swing

qq_47701945的博客

07-31

441

1.GUI(Graphics User Interface)就是我們通常所說的圖像用戶界面

我們使用的Windows之所以廣為人知,其最初的吸引力就是它提供的圖形用戶界面

2.AWT(Abstract Window Toolkit):抽象窗口工具集,它是Sun提供的一套用于創(chuàng)建GUI界面的類庫,它為Java應用程序提供了基本的圖像組件

優(yōu)點:使用AWT創(chuàng)建的圖像界面應用和所在的運行平臺有相同的界面風格(跨平臺)

缺點:1.使用AWT做出的圖像化界面在所有平臺上都顯得很簡陋,功能也非常有限

...

JavaGui超詳細筆記——Gui概念、Swing概述、容器組件、布局管理器、常用組件、事件處理、對話框、內部類

xinin919的博客

08-16

2636

Gui概念、Swing概述、容器組件、布局管理器、常用組件、事件處理、對話框、內部類

細說:AWT,SWT,Swing

hqs7636的專欄

06-13

196

[url]http://www.java3z.com/cwbwebhome/article/article2/21005.html?id=1709[/url]

Overview概述

Java GUI 工具包一直是一個倍受爭議的話題。同樣的爭論也發(fā)生在其他編程語言如Smalltalk。實際上每個平臺無關的語言都存在著這樣的爭論。Java作為當前最受廣泛使用的編程語言而尤為突出。

...

java awt原理_Java中AWT、Swing與SWT三大GUI技術的原理與效率差別

weixin_39648824的博客

02-28

488

看了一下對Java GUI討論的帖子,因此寫了一篇文章來闡述一下各類GUI技術的優(yōu)劣。Java世界中,目前最知名的三大GUI庫分別是:一、AWT(Abstract Window Toolkit)抽象窗口工具包庫,包含于全部的Java SDK中二、Swing高級圖形庫,包含于Java2 SDK中三、來自IBM Eclipse開源項目的SWT(Standard Widget Toolkit)標準窗口部...

淺析Java中Swing與SWT和AWT的區(qū)別及實現(xiàn)_王亞南

03-11

Swing 和 SWT,AWT 技術都是在 Java 圖形化界面設計中常用的開發(fā)包,在進行 Java GUI 編程時,大家或許經 常徘徊在 SWT,Swing,AWT 之間選擇,哪一個更合適自己? 本文簡單介紹了三者中各自的功能特點,以及之間的區(qū)別...

java 圖形界面 java awt swt swing gui

11-03

java awt swt swing gui 教程 pdf

SWT、Swing 或 AWT:哪個更適合您?

Ryuka的專欄

06-01

2000

2006 年 4 月 27 日本文通過對 Eclipse 的 SWT 和 Java Swing、Abstract Windows Toolkit(AWT)GUI 工具包進行比較,可以幫助新應用程序的開發(fā)人員從中選擇適當?shù)墓ぞ?。您可以通過本文了解對每個工具包的基本特性的介紹,以及使用每個工具包的優(yōu)缺點。簡介developerWorks 上另外一些作者已經展示了如何在 Swing 和 SW

Java GUI編程中AWT/swing/SWT的優(yōu)缺點

SayGoodbyeToYou的專欄

03-24

4303

http://www.cnblogs.com/dugang/archive/2010/10/22/1858478.html

AWT

  AWT是Abstract Window Toolkit(抽象窗口工具包)的縮寫,是SUN專門針對Java GUI編程提供的最早的也是最初的開發(fā)工具包,用來建立和設置Java圖形用戶界面,這個工具包提供了一套與本地圖形界面交互的接口。AWT 中的圖形函數(shù)與操

java swt awt_AWT/SWT/Swing大比較之一:模型設計與實現(xiàn)

weixin_39650784的博客

03-06

121

前幾天由于網絡問題,訪問不了新浪網,現(xiàn)在準備重新開始博客寫作。最近打算寫的內容主要包括Java性能、Swing和SWT的比較、Swing方面的一些技術。=====================================================總的來說Swing/AWT和SWT在事件處理機制上是類似的,窗口組件的樹狀結構也是類似的。圖形用戶界面系統(tǒng)在事件處理設計上有兩大類,一類是單線...

swt 與 awt/swing 的區(qū)別與綜合比較

web前后端開發(fā)

06-25

468

本文通過對 Eclipse 的 SWT 和 Java Swing、Abstract Windows Toolkit(AWT)GUI 工具包進行比較,可以幫助新應用程序的開發(fā)人員從中選擇適當?shù)墓ぞ摺?

[color=red][size=xx-large]綜合網上各家所述 集結此文:[/size][/color]

是Swing是純Java實現(xiàn),而SWT和AWT是Java和JNI的混合...

java圖像用戶界面swing、awt、swt

henry的博客

10-06

1884

1、演進

(1)Sun已經提供了一個跨平臺GUI開發(fā)工具包AWT抽象窗口工具箱(Abstract Window Toolkit)

(2)Sun又創(chuàng)建了一個新的gui框架swing,解決了awt存在的Icd(本地化)問題(swing是awt的繼承發(fā)展,但Swing不是AWT的子類)

(3)IBM認為swing比較消耗內存,創(chuàng)建了一個新的GUI庫,這就是SWT

(4)IBM為了方便

Eclipse下搭建SWT與Swing圖形界面開發(fā)環(huán)境

熱門推薦

深之JohnChen的專欄

07-29

1萬+

Eclipse SWT Swing 圖形界面開發(fā)

java GUI框架

08-12

Java提供了幾種常用的GUI(圖形用戶界面)框架,包括:

1. Swing:Swing是Java的標準GUI庫,提供了豐富的組件(如按鈕、文本框、標簽等)和布局管理器(如FlowLayout、BorderLayout等),用于構建桌面應用程序的用戶界面。Swing是基于AWT(Abstract Window Toolkit)開發(fā)的,并提供了更好的外觀和跨平臺性能。

2. JavaFX:JavaFX是一個現(xiàn)代化的GUI框架,提供了豐富的UI控件、布局容器、多媒體支持和動畫效果等功能。它使用FXML(一種基于XML的語言)來定義界面,也可以通過Java代碼來創(chuàng)建和操作界面。JavaFX在Java 8之后成為Java的一部分,取代了Swing成為推薦的GUI開發(fā)框架。

3. SWT(Standard Widget Toolkit):SWT是Eclipse基金會開發(fā)的GUI庫,它與操作系統(tǒng)本地窗口系統(tǒng)集成更緊密,提供更原生的外觀和性能。SWT使用Java代碼編寫,但底層調用了操作系統(tǒng)的本地API。

這些GUI框架都有各自的特點和適用場景。Swing適用于構建跨平臺的桌面應用程序,JavaFX提供了更現(xiàn)代化的界面和豐富的功能,而SWT則更注重與底層操作系統(tǒng)的集成。選擇合適的GUI框架取決于你的需求和偏好。同時,一些第三方庫和框架也可以用于Java GUI開發(fā),如Java AWT、Apache Pivot等。

“相關推薦”對你有幫助么?

非常沒幫助

沒幫助

一般

有幫助

非常有幫助

提交

光_影

CSDN認證博客專家

CSDN認證企業(yè)博客

碼齡7年

暫無認證

0

原創(chuàng)

51萬+

周排名

83萬+

總排名

12萬+

訪問

等級

1184

積分

37

粉絲

68

獲贊

15

評論

191

收藏

私信

關注

最新評論

Java中char和String 的深入理解 - 字符編碼

Misa落雪:

你那個少了有一個腿的 蟲 不是漢字把,

Java中char和String 的深入理解 - 字符編碼

Misa落雪:

手寫輸入法,都寫不出來,那就不是個漢字?。?!

Java中char和String 的深入理解 - 字符編碼

Misa落雪:

我的也是,大家的都是,不是

Java中AWT、Swing與SWT三大GUI技術的原理與效率差異

渝涅:

jfx現(xiàn)在也挺尷尬的其實,jfx的運行時包還得另外下,oracle是準備放棄Java gui這一塊了,讓Java專注于服務端

【SpringBoot】核心依賴和自動配置

·Toto_:

請問引入部分的代碼要在哪里寫???怎么引入

您愿意向朋友推薦“博客詳情頁”嗎?

強烈不推薦

不推薦

一般般

推薦

強烈推薦

提交

最新文章

JAVA序列號的serialVersionUID

JS對象—對象總結(創(chuàng)建、屬性、方法)

js數(shù)組方法大全

2020年11篇

2019年30篇

2018年37篇

目錄

目錄

最新文章

JAVA序列號的serialVersionUID

JS對象—對象總結(創(chuàng)建、屬性、方法)

js數(shù)組方法大全

2020年11篇

2019年30篇

2018年37篇

目錄

評論?4

被折疊的??條評論

為什么被折疊?

到【灌水樂園】發(fā)言

查看更多評論

添加紅包

祝福語

請?zhí)顚懠t包祝福語或標題

紅包數(shù)量

紅包個數(shù)最小為10個

紅包總金額

紅包金額最低5元

余額支付

當前余額3.43元

前往充值 >

需支付:10.00元

取消

確定

下一步

知道了

成就一億技術人!

領取后你會自動成為博主和紅包主的粉絲

規(guī)則

hope_wisdom 發(fā)出的紅包

實付元

使用余額支付

點擊重新獲取

掃碼支付

錢包余額

0

抵扣說明:

1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。 2.余額無法直接購買下載,可以購買VIP、付費專欄及課程。

余額充值

Java SWT 教程 · ZetCode 中文系列教程 · 看云

Java SWT 教程 · ZetCode 中文系列教程 · 看云

1分鐘部署網站AI智能客服,大模型訓練自有數(shù)據(jù),簡單好用,有效降低客服成本

廣告

# Java SWT 教程

> 原文: [http://zetcode.com/gui/javaswt/](http://zetcode.com/gui/javaswt/)

這是 Java SWT 教程。 在本教程中,我們將學習使用 Java SWT 庫進行 GUI 編程的基礎。 本教程適合初學者和中級程序員。 本教程使用 JDK 8。

## 目錄

* [簡介](introduction/)

* [布局管理](layout/)

* [菜單和工具欄](menustoolbars/)

* [小部件](widgets/)

* [表格小部件](table/)

* [對話框](dialogs/)

* [繪圖](painting/)

* [貪食蛇](nibbles/)

## SWT

標準窗口小部件工具箱(SWT)是用于 Java 編程語言的圖形窗口小部件工具箱。 它最初由 IBM 開發(fā),現(xiàn)已成為 Eclipse Foundation 的一部分。 它是 Swing 和 JavaFX 的替代方法。 SWT 使用 Windows API 或 GTK+ 之類的本地 GUI API 通過 Java 本機接口(JNI)創(chuàng)建其小部件。

[Tweet](https://twitter.com/share)

## 相關教程和電子書

有[高級 Java Swing 電子書](/ebooks/advancedjavaswing/), [Java Swing 教程](/tutorials/javaswingtutorial/), [JavaFX 教程](/gui/javafx/)和 [Java 教程](/lang/java/)。

ZetCode 數(shù)據(jù)庫教程

MySQL 教程

MySQL 簡介

MySQL 安裝

MySQL 的第一步

MySQL 快速教程

MySQL 存儲引擎

MySQL 數(shù)據(jù)類型

在 MySQL 中創(chuàng)建,更改和刪除表

MySQL 表達式

在 MySQL 中插入,更新和刪除數(shù)據(jù)

MySQL 中的SELECT語句

MySQL 子查詢

MySQL 約束

在 MySQL 中導出和導入數(shù)據(jù)

在 MySQL 中連接表

MySQL 函數(shù)

MySQL 中的視圖

MySQL 中的事務

MySQL 存儲過程

MySQL Python 教程

MySQL Perl 教程

MySQL & Perl DBI

使用 Perl 連接到 MySQL 數(shù)據(jù)庫

MySQL 中的 Perl 錯誤處理

使用 Perl 進行 MySQL 查詢

在 MySQL 中使用 Perl 綁定參數(shù)&列

在 MySQL 中使用 Perl 處理圖像

使用 Perl 獲取 MySQL 元數(shù)據(jù)

Perl 的 MySQL 事務

MySQL C API 編程教程

MySQL Visual Basic 教程

MySQL PHP 教程

MySQL Java 教程

MySQL Ruby 教程

MySQL C# 教程

SQLite 教程

SQLite 簡介

sqlite3 命令行工具

在 SQLite 中創(chuàng)建,刪除和更改表

SQLite 表達式

SQLite 插入,更新,刪除數(shù)據(jù)

SQLite SELECT語句

SQLite 約束

SQLite 連接表

SQLite 函數(shù)

SQLite 視圖,觸發(fā)器,事務

SQLite C 教程

SQLite Python 教程

SQLite Perl 教程

Perl DBI

使用 Perl 連接到 SQLite 數(shù)據(jù)庫

SQLite Perl 錯誤處理

使用 Perl 的 SQLite 查詢

使用 Perl 綁定 SQLite 參數(shù)&列

使用 Perl 在 SQLite 中處理圖像

使用 Perl 獲取 SQLite 元數(shù)據(jù)

使用 Perl 進行 SQLite 事務

SQLite Ruby 教程

連接到 SQLite 數(shù)據(jù)庫

在 SQLite 中使用 Ruby 進行 SQL 查詢

綁定參數(shù)

處理圖像

使用 Ruby 獲取 SQLite 元數(shù)據(jù)

Ruby 的 SQLite 事務

SQLite C# 教程

SQLite C# 簡介

使用SqliteDataReader檢索數(shù)據(jù)

ADO.NET 數(shù)據(jù)集

使用 C# 在 SQLite 中處理圖像

使用 C# 獲取 SQLite 元數(shù)據(jù)

使用 C# 的 SQLite 事務

SQLite Visual Basic 教程

SQLite Visual Basic 簡介

使用SqliteDataReader檢索數(shù)據(jù)

ADO.NET 的數(shù)據(jù)集

使用 Visual Basic 在 SQLite 中處理圖像

使用 Visual Basic 獲取 SQLite 元數(shù)據(jù)

使用 Visual Basic 的 SQLite 事務

PostgreSQL C 教程

PostgreSQL Ruby 教程

PostgreSQL PHP 教程

PostgreSQL PHP 編程簡介

在 PostgreSQL 中使用 PHP 檢索數(shù)據(jù)

在 PostgreSQL 中使用 PHP 處理圖像

用 PHP 獲取 PostgreSQL 元數(shù)據(jù)

在 PostgreSQL 中使用 PHP 進行事務

PostgreSQL Java 教程

Apache Derby 教程

Derby 簡介

Derby 的安裝&配置

Derby 工具

ij 工具

Derby 中的 SQL 查詢

在 Derby 中使用 JDBC 進行編程

Derby 安全

使用 Derby & Apache Tomcat

NetBeans 和 Derby

SQLAlchemy 教程

SQLAlchemy 簡介

原始 SQL

模式定義語言

SQL 表達式語言

SQLAlchemy 中的對象關系映射器

MongoDB PHP 教程

MongoDB JavaScript 教程

MongoDB Ruby 教程

Spring JdbcTemplate 教程

JDBI 教程

MyBatis 教程

Hibernate Derby 教程

ZetCode .NET 教程

Visual Basic 教程

Visual Basic

Visual Basic 語法結構

基本概念

Visual Basic 數(shù)據(jù)類型

Visual Basic 中的字符串

運算符

控制流

Visual Basic 數(shù)組

Visual Basic 中的過程&函數(shù)

在 Visual Basic 中組織代碼

面向對象編程

Visual Basic 中的面向對象編程 II

Visual Basic 中的集合

輸入和輸出

C# 教程

C# 語言

C# 語法結構

C# 基礎

C# 數(shù)據(jù)類型

C# 中的字符串

C# 運算符

C# 中的流控制

C# 數(shù)組

C# 面向對象編程

C# 中的方法

C# 面向對象編程 II

C# 屬性

C# 結構

C# 委托

命名空間

C# 集合

C# 輸入和輸出

C# 目錄教程

C# 字典教程

在 C# 中讀取文本文件

C# 中的日期和時間

在 C# 中讀取網頁

C# HttpClient教程

ASP.NET Core 教程

ZetCode 圖形教程

Java 2D 游戲教程

Java 游戲基礎

動畫

移動精靈

碰撞檢測

Java 益智游戲

Java Snake

Breakout 游戲

Java 俄羅斯方塊

Java 吃豆人

Java 太空侵略者

Java 掃雷

Java 推箱子

Java 2D 教程

介紹

基本繪圖

形狀和填充

透明度

合成

剪裁

變換

特效

圖像

文字和字體

命中測試,移動物體

俄羅斯方塊

Cario 圖形教程

Cario 圖形庫

Cario 定義

Cairo 后端

Cairo 基本圖形

形狀和填充

漸變

透明度

合成

剪裁和遮罩

變換

Cairo 文字

Cairo 中的圖像

根窗口

PyCairo 教程

PyCairo 簡介

PyCairo 后端

PyCairo 中的基本繪圖

PyCairo 形狀和填充

PyCairo 漸變

PyCairo 剪裁&遮罩

PyCairo 的透明度

PyCairo 中的變換

PyCairo 中的文字

PyCairo 中的圖像

根窗口

HTML5 畫布教程

介紹

HTML5 畫布中的直線

HTML5 畫布形狀

HTML5 畫布填充

HTML5 畫布中的透明度

HTML5 畫布合成

HTML5 canvas 中的變換

HTML5 畫布中的文字

HTML5 畫布中的動畫

HTML5 畫布中的 Snake

ZetCode GUI 教程

Windows API 教程

Windows API 簡介

Windows API main函數(shù)

Windows API 中的系統(tǒng)函數(shù)

Windows API 中的字符串

Windows API 中的日期和時間

Windows API 中的一個窗口

UI 的第一步

Windows API 菜單

Windows API 對話框

Windows API 控件 I

Windows API 控件 II

Windows API 控件 III

Windows API 中的高級控件

Windows API 中的自定義控件

Windows API 中的 GDI

PyQt4 教程

PyQt4 簡介

PyQt4 中的第一個程序

PyQt4 中的菜單和工具欄

PyQt4 中的布局管理

PyQt4 中的事件和信號

PyQt4 中的對話框

PyQt4 小部件

PyQt4 小部件 II

PyQt4 中的拖放

PyQt4 中的繪圖

PyQt4 中的自定義小部件

PyQt4 中的俄羅斯方塊游戲

PyQt5 教程

PyQt5 簡介

PyQt5 日期和時間

PyQt5 中的第一個程序

PyQt5 中的菜單和工具欄

PyQt5 中的布局管理

PyQt5 中的事件和信號

PyQt5 中的對話框

PyQt5 小部件

PyQt5 小部件 II

PyQt5 拖放

PyQt5 中的繪圖

PyQt5 中的自定義小部件

PyQt5 中的俄羅斯方塊

Qt4 教程

Qt4 工具包簡介

Qt4 工具類

Qt4 中的字符串

Qt4 中的日期和時間

在 Qt4 中使用文件和目錄

Qt4 中的第一個程序

Qt4 中的菜單和工具欄

Qt4 中的布局管理

Qt4 中的事件和信號

Qt4 小部件

Qt4 小部件 II

Qt4 中的繪圖

Qt4 中的自定義小部件

Qt4 中的打磚塊游戲

Qt5 教程

Qt5 工具包簡介

Qt5 中的字符串

Qt5 中的日期和時間

Qt5 中的容器

在 Qt5 中處理文件和目錄

Qt5 中的第一個程序

Qt5 中的菜單和工具欄

Qt5 中的布局管理

Qt5 中的事件和信號

Qt5 小部件

Qt5 小部件 II

Qt5 中的繪圖

Qt5 中的自定義小部件

Qt5 中的貪食蛇

Qt5 中的打磚塊游戲

PySide 教程

PySide 工具包簡介

PySide 中的第一個程序

PySide 中的菜單和工具欄

PySide 中的布局管理

PySide 中的事件和信號

PySide 中的對話框

PySide 小部件

PySide 小部件 II

在 PySide 中拖放

在 PySide 中繪圖

PySide 中的自定義小部件

PySide 中的俄羅斯方塊游戲

Tkinter 教程

Tkinter 簡介

Tkinter 中的布局管理

Tkinter 標準小部件屬性

Tkinter 小部件

Tkinter 中的菜單和工具欄

Tkinter 中的對話框

Tkinter 中的繪圖

Tkinter 中的貪食蛇

Tcl/Tk 教程

Tcl/Tk 簡介

Tcl/Tk 中的布局管理

Tcl/Tk 小部件

Tcl/Tk 中的菜單和工具欄

Tcl/Tk 中的對話框

Tcl/Tk 繪圖

貪食蛇

Qt 快速教程

Java Swing 教程

Java Swing 簡介

Java Swing 首個程序

Java Swing 中的菜單和工具欄

Swing 布局管理

GroupLayout管理器

Java Swing 事件

基本的 Swing 組件

基本的 Swing 組件 II

Java Swing 對話框

Java Swing 模型架構

Swing 中的拖放

Swing 中的繪圖

Java Swing 中的可調整大小的組件

Java Swing 中的益智游戲

俄羅斯方塊

JavaFX 教程

JavaFX 簡介

JavaFX 首個程序

JavaFX 布局窗格

基本的 JavaFX 控件

基本 JavaFX 控件 II

JavaFX 事件

JavaFX 效果

JavaFX 動畫

JavaFX 畫布

JavaFX 圖表

Java SWT 教程

Java SWT 簡介

Java SWT 中的布局管理

Java SWT 中的菜單和工具欄

Java SWT 中的小部件

Table小部件

Java SWT 中的對話框

Java SWT 繪圖

Java SWT 中的貪食蛇

wxWidgets 教程

wxWidgets 簡介

wxWidgets 助手類

wxWidgets 中的第一個程序

wxWidgets 中的菜單和工具欄

wxWidgets 中的布局管理

wxWidgets 中的事件

wxWidgets 中的對話框

wxWidgets 小部件

wxWidgets 小部件 II

wxWidgets 中的拖放

wxWidgets 中的設備上下文

wxWidgets 中的自定義小部件

wxWidgets 中的俄羅斯方塊游戲

wxPython 教程

wxPython 簡介

第一步

菜單和工具欄

wxPython 中的布局管理

wxPython 中的事件

wxPython 對話框

小部件

wxPython 中的高級小部件

wxPython 中的拖放

wxPython 圖形

創(chuàng)建自定義小部件

wxPython 中的應用框架

wxPython 中的俄羅斯方塊游戲

C# Winforms Mono 教程

Mono Winforms 簡介

Mono Winforms 中的第一步

Mono Winforms 中的布局管理

Mono Winforms 中的菜單和工具欄

Mono Winforms 中的基本控件

Mono Winforms 中的高級控件

對話框

Mono Winforms 中的拖放

Mono Winforms 中的繪圖

Mono Winforms 中的貪食蛇

Java Gnome 教程

Java Gnome 簡介

Java Gnome 的第一步

Java Gnome 中的布局管理

Java Gnome 中的布局管理 II

Java Gnome 中的菜單

Java Gnome 中的工具欄

Java Gnome 中的事件

Java Gnome 中的小部件

Java Gnome 中的小部件 II

Java Gnome 中的高級小部件

Java Gnome 中的對話框

Java Gnome 中的 Pango

在 Java Gnome 中用 Cairo 繪圖

Cario 繪圖 II

Java Gnome 中的貪食蛇

QtJambi 教程

QtJambi 簡介

QtJambi 中的布局管理

QtJambi 中的小部件

QtJambi 中的菜單和工具欄

QtJambi 對話框

QtJambi 中的繪圖

QtJambi 中的自定義小部件

貪食蛇

GTK+ 教程

GTK+ 簡介

GTK+ 中的第一個程序

GTK+ 中的菜單和工具欄

GTK+ 布局管理

GTK+ 事件和信號

GTK+ 對話框

GTK+ 小部件

GTK+ 小部件 II

GtkTreeView小部件

GtkTextView小部件

自定義 GTK+ 小部件

Ruby GTK 教程

Ruby GTK 簡介

Ruby GTK 中的布局管理

Ruby GTK 中的小部件

Ruby GTK 中的菜單和工具欄

Ruby GTK 中的對話框

Ruby GTK Cario 繪圖

Ruby GTK 中的自定義小部件

Ruby GTK 中的貪食蛇

GTK# 教程

GTK# 簡介

GTK 的第一步

GTK# 中的布局管理

GTK 中的菜單

GTK# 中的工具欄

GTK# 中的事件

GTK# 中的小部件

GTK 中的小部件 II

GTK# 中的高級小部件

GTK# 中的對話框

Pango

GTK# 中的 Cario 繪圖

GTK# 中的 Cario 繪圖 II

GTK# 中的自定義小部件

Visual Basic GTK# 教程

Visual Basic GTK# 簡介

布局管理

小部件

菜單和工具欄

對話框

Cario 繪圖

自定義小部件

貪食蛇

PyGTK 教程

PyGTK 簡介

PyGTK 的第一步

PyGTK 中的布局管理

PyGTK 中的菜單

PyGTK 中的工具欄

PyGTK 中的事件和信號

PyGTK 中的小部件

PyGTK 中的小部件 II

PyGTK 中的高級小部件

PyGTK 中的對話框

Pango

Pango II

PyGTK 中的 Cario 繪圖

Cario 繪圖 II

PyGTK 中的貪食蛇游戲

PyGTK 中的自定義小部件

PHP GTK 教程

PHP GTK 簡介

PHP GTK 中的布局管理

PHP GTK 中的小部件

PHP GTK 中的菜單和工具欄

對話框

Cario 繪圖

自定義小部件

貪食蛇

C# Qyoto 教程

Qyoto 介紹

布局管理

Qyoto 中的小部件

Qyoto 中的菜單和工具欄

Qyoto 對話框

Qyoto 中的繪圖

Qyoto 中的繪圖 II

Qyoto 中的自定義小部件

貪食蛇

Ruby Qt 教程

Ruby Qt 簡介

Ruby Qt 中的布局管理

Ruby Qt 中的小部件

菜單和工具欄

Ruby Qt 中的對話框

用 Ruby Qt 繪圖

Ruby Qt 中的自定義小部件

Ruby Qt 中的貪食蛇

Visual Basic Qyoto 教程

Qyoto 介紹

布局管理

Qyoto 中的小部件

Qyoto 中的菜單和工具欄

Qyoto 對話框

Qyoto 中的繪圖

Qyoto 中的自定義小部件

貪食蛇

Mono IronPython Winforms 教程

介紹

IronPython Mono Winforms 中的第一步

布局管理

菜單和工具欄

Mono Winforms 中的基本控件

Mono Winforms 中的基本控件 II

Mono Winforms 中的高級控件

對話框

Mono Winforms 中的拖放

繪圖

IronPython Mono Winforms 中的繪圖 II

IronPython Mono Winforms 中的貪食蛇

IronPython Mono Winforms 中的俄羅斯方塊游戲

FreeBASIC GTK 教程

Jython Swing 教程

Jython Swing 簡介

Jython Swing 中的布局管理

Jython Swing 中的組件

Jython Swing 中的菜單和工具欄

Jython Swing 中的對話框

Jython Swing 中的繪圖

Jython Swing 中的半字節(jié)

JRuby Swing 教程

JRuby Swing 簡介

JRuby Swing 中的布局管理

JRuby Swing 中的組件

菜單和工具欄

JRuby Swing 中的對話框

在 JRuby Swing 中繪圖

JRuby Swing 中的貪食蛇

Visual Basic Winforms 教程

Visual Basic Winforms 簡介

布局管理

基本控制

進階控件

菜單和工具欄

對話框

繪圖

拖放

貪食蛇

JavaScript GTK 教程

JavaScript GTK 簡介

布局管理

JavaScript GTK 中的小部件

JavaScript GTK 中的菜單和工具欄

JavaScript GTK 中的對話框

JavaScript GTK 中的 Cario 繪圖

ZetCode Java 教程

Java 教程

Java 語言

Java 語法結構

Java 基礎

Java 數(shù)據(jù)類型

Java 數(shù)據(jù)類型 II

Java 字符串

Java 數(shù)組

Java 表達式

Java 控制流程

Java 面向對象的編程

Java 方法

Java 面向對象編程 II

Java 包

Java 中的異常

Java 集合

Java 流

Java Future 教程

Java Comparable和Comparator

Java DOM 教程

Java MVC 教程

Java SAX 教程

Java JAXB 教程

Java JSON 處理教程

Java H2 教程

MongoDB Java 教程

Java 正則表達式教程

Java PDFBox 教程

Java 文件教程

Java Files.list教程

Java Files.walk教程

Java DirectoryStream教程

Java 外部與內部迭代器

Java 文件大小

用 Java 創(chuàng)建目錄

用 Java 創(chuàng)建文件

Java Log4j 教程

Gson 教程

Java RequestDispatcher

Java HTTP GET/POST 請求

Java InputStream教程

Java FileOutputStream教程

Java FileInputStream教程

Java ZipInputStream教程

Java FileWriter教程

EJB 簡介

Java forEach教程

Jetty 教程

Tomcat Derby 教程

Stripes 介紹

使用 Stripes 的 Java webapp,MyBatis,& Derby

EclipseLink 簡介

Java 中的數(shù)據(jù)源

JSTL 中的 SQL 查詢標記

Java 驗證過濾器

Hibernate 驗證器

用 Java 顯示圖像

Play 框架簡介

Spark Java 簡介

Java ResourceBundle教程

Jtwig 教程

Java Servlet 教程

Java 套接字教程

FreeMarker 教程

Android 教程

Java EE 5 教程

JSoup 教程

JFreeChart 教程

ImageIcon教程

用 Java 復制文件

Java 文件時間教程

如何使用 Java 獲取當前日期時間

Java 列出目錄內容

Java 附加到文件

Java ArrayList教程

用 Java 讀寫 ICO 圖像

Java int到String的轉換

Java HashSet教程

Java HashMap教程

Java static關鍵字

Java 中的HashMap迭代

用 Java 過濾列表

在 Java 中讀取網頁

Java 控制臺應用

Java 集合的便利工廠方法

Google Guava 簡介

OpenCSV 教程

用 Java8 的StringJoiner連接字符串

Java 中元素迭代的歷史

Java 謂詞

Java StringBuilder

Java 分割字串教學

Java NumberFormat

Java TemporalAdjusters教程

Apache FileUtils教程

Java Stream 過濾器

Java 流歸約

Java 流映射

Java InputStreamReader教程

在 Java 中讀取文本文件

Java Unix 時間

Java LocalTime

Java 斐波那契

Java ProcessBuilder教程

Java 11 的新功能

ZetCode JavaScript 教程

Ramda 教程

Lodash 教程

Collect.js 教程

Node.js 簡介

Node HTTP 教程

Node-config 教程

Dotenv 教程

Joi 教程

Liquid.js 教程

faker.js 教程

Handsontable 教程

PouchDB 教程

Cheerio 教程

Axios 教程

Jest 教程

JavaScript 正則表達式

用 JavaScript 創(chuàng)建對象

Big.js 教程

Moment.js 教程

Day.js 教程

JavaScript Mustache 教程

Knex.js 教程

MongoDB JavaScript 教程

Sequelize 教程

Bookshelf.js 教程

Node Postgres 教程

Node Sass 教程

Document.querySelector教程

Document.all教程

JSON 服務器教程

JavaScript 貪食蛇教程

JavaScript 構建器模式教程

JavaScript 數(shù)組

XMLHttpRequest教程

從 JavaScript 中的 URL 讀取 JSON

在 JavaScript 中循環(huán)遍歷 JSON 數(shù)組

jQuery 教程

Google 圖表教程

ZetCode Kotlin 教程

Kotlin Hello World 教程

Kotlin 變量

Kotlin 的運算符

Kotlin when表達式

Kotlin 數(shù)組

Kotlin 范圍

Kotlin Snake

Kotlin Swing 教程

Kotlin 字符串

Kotlin 列表

Kotlin 映射

Kotlin 集合

Kotlin 控制流程

Kotlin 寫入文件

Kotlin 讀取文件教程

Kotlin 正則表達式

ZetCode 其它教程

TCL 教程

Tcl

Tcl 語法結構

Tcl 中的基本命令

Tcl 中的表達式

Tcl 中的控制流

Tcl 中的字符串

Tcl 列表

Tcl 中的數(shù)組

Tcl 中的過程

輸入&輸出

AWK 教程

Vaadin 教程

Vaadin 框架介紹

Vaadin Grid教程

Vaadin TextArea教程

Vaadin ComboBox教程

Vaadin Slider教程

Vaadin CheckBox教程

Vaadin Button教程

Vaadin DateField教程

Vaadin Link教程

ZetCode PHP 教程

PHP 教程

PHP

PHP 語法結構

PHP 基礎

PHP 數(shù)據(jù)類型

PHP 字符串

PHP 運算符

PHP 中的控制流

PHP 數(shù)組

PHP 數(shù)組函數(shù)

PHP 中的函數(shù)

PHP 正則表達式

PHP 中的面向對象編程

PHP 中的面向對象編程 II

PHP Carbon 教程

PHP Monolog 教程

PHP 配置教程

PHP Faker 教程

Twig 教程

Valitron 教程

Doctrine DBAL QueryBuilder 教程

PHP Respect 驗證教程

PHP Rakit 驗證教程

PHP PDO 教程

CakePHP 數(shù)據(jù)庫教程

PHP SQLite3 教程

PHP 文件系統(tǒng)函數(shù)

ZetCode Python 教程

Python 教程

Python 語言

交互式 Python

Python 語法結構

Python 數(shù)據(jù)類型

Python 字符串

Python 列表

Python 字典

Python 運算符

Python 關鍵字

Python 函數(shù)

Python 中的文件

Python 中的面向對象編程

Python 模塊

Python 中的包

Python 異常

Python 迭代器和生成器

Python 內省

Python Faker 教程

Python f 字符串教程

Python bcrypt 教程

Python 套接字教程

Python smtplib教程

OpenPyXL 教程

Python pathlib教程

Python YAML 教程

Python 哈希教程

Python ConfigParser教程

Python 日志教程

Python argparse 教程

Python SQLite 教程

Python Cerberus 教程

Python PostgreSQL 教程

PyMongo 教程

PyMySQL 教程

Peewee 教程

pyDAL 教程

pytest 教程

Bottle 教程

Python Jinja 教程

PrettyTable 教程

BeautifulSoup 教程

pyquery 教程

Python for循環(huán)

Python 反轉

Python Lambda 函數(shù)

Python 集合

Python 映射

Python CSV 教程-讀寫 CSV

Python 正則表達式

Python SimpleJson 教程

SymPy 教程

Pandas 教程

Matplotlib 教程

Pillow 教程

Python FTP 教程

Python Requests 教程

Python Arrow 教程

Python 列表推導式

Python 魔術方法

PyQt 中的QPropertyAnimation

PyQt 中的QNetworkAccessManager

ZetCode Ruby 教程

Ruby 教程

Ruby

Ruby 語法結構

Ruby 基礎

Ruby 變量

Ruby 中的對象

Ruby 數(shù)據(jù)類型

Ruby 字符串

Ruby 表達式

Ruby 控制流

Ruby 數(shù)組

Ruby 哈希

Ruby 中的面向對象編程

Ruby 中的面向對象編程 II

Ruby 正則表達式

Ruby 輸入&輸出

Ruby HTTPClient教程

Ruby Faraday 教程

Ruby Net::HTTP教程

ZetCode Servlet 教程

從 Java Servlet 提供純文本

Java Servlet JSON 教程

Java Servlet HTTP 標頭

Java Servlet 復選框教程

Java servlet 發(fā)送圖像教程

Java Servlet JQuery 列表教程

Servlet FreeMarker JdbcTemplate 教程-CRUD 操作

jQuery 自動補全教程

Java servlet PDF 教程

servlet 從 WAR 內讀取 CSV 文件

Java HttpServletMapping

EasyUI datagrid

Java Servlet RESTFul 客戶端

Java Servlet Log4j 教程

Java Servlet 圖表教程

Java ServletConfig教程

Java Servlet 讀取網頁

嵌入式 Tomcat

Java Servlet 分頁

Java Servlet Weld 教程

Java Servlet 上傳文件

Java Servlet 提供 XML

Java Servlet 教程

JSTL forEach標簽

使用 jsGrid 組件

ZetCode Spring 教程

Spring @Bean注解教程

Spring @Autowired教程

Spring @GetMapping教程

Spring @PostMapping教程

Spring @DeleteMapping教程

Spring @RequestMapping教程

Spring @PathVariable教程

Spring @RequestBody教程

Spring @RequestHeader教程

Spring Cookies 教程

Spring 資源教程

Spring 重定向教程

Spring 轉發(fā)教程

Spring ModelAndView教程

Spring MessageSource教程

Spring AnnotationConfigApplicationContext

Spring BeanFactoryPostProcessor教程

Spring BeanFactory教程

Spring context:property-placeholder教程

Spring @PropertySource注解教程

Spring @ComponentScan教程

Spring @Configuration教程

Spring C 命名空間教程

Spring P 命名空間教程

Spring bean 引用教程

Spring @Qualifier注解教程

Spring ClassPathResource教程

Spring 原型作用域 bean

Spring Inject List XML 教程

Spring 概要文件 XML 教程

Spring BeanDefinitionBuilder教程

Spring 單例作用域 bean

獨立的 Spring 應用

經典 Spring 應用中的JdbcTemplate

Spring EmbeddedDatabaseBuilder教程

Spring HikariCP 教程

Spring Web 應用簡介

Spring BeanPropertyRowMapper教程

Spring DefaultServlet教程

Spring WebSocket 教程

Spring WebJars 教程

Spring @MatrixVariable教程

Spring Jetty 教程

Spring 自定義 404 錯誤頁面教程

Spring WebApplicationInitializer教程

Spring BindingResult教程

Spring FreeMarker 教程

Spring Thymeleaf 教程

Spring ResourceHandlerRegistry教程

SpringRunner 教程

Spring MockMvc 教程

ZetCode Spring Boot 教程

Spring Boot 發(fā)送電子郵件教程

Spring Boot WebFlux 教程

Spring Boot ViewControllerRegistry教程

Spring Boot CommandLineRunner教程

Spring Boot ApplicationReadyEvent 教程

Spring Boot CORS 教程

Spring Boot @Order教程

Spring Boot @Lazy教程

Spring Boot Flash 屬性

Spring Boot CrudRepository 教程

Spring Boot JpaRepository 教程

Spring Boot findById 教程

Spring Boot Data JPA @NamedQuery教程

Spring Boot Data JPA @Query教程

Spring Boot Querydsl 教程

Spring Boot Data JPA 排序教程

Spring Boot @DataJpaTest教程

Spring Boot TestEntityManager 教程

Spring Boot Data JPA 派生的查詢

Spring Boot Data JPA 查詢示例

Spring Boot Jersey 教程

Spring Boot CSV 教程

SpringBootServletInitializer教程

在 Spring Boot 中加載資源

Spring Boot H2 REST 教程

Spring Boot RestTemplate

Spring Boot REST XML 教程

Spring Boot Moustache 教程

Spring Boot Thymeleaf 配置

Spring Boot 自動控制器

Spring Boot FreeMarker 教程

Spring Boot Environment

Spring Boot Swing 集成教程

在 Spring Boot 中提供圖像文件

在 Spring Boot 中創(chuàng)建 PDF 報告

Spring Boot 基本注解

Spring Boot @ResponseBody教程

Spring Boot @PathVariable教程

Spring Boot REST Data JPA 教程

Spring Boot @RequestParam教程

Spring Boot 列出 bean

Spring Boot @Bean

Spring Boot @Qualifier教程

在 Spring Boot 中提供靜態(tài)內容

Spring Boot Whitelabel 錯誤

Spring Boot DataSourceBuilder 教程

Spring Boot H2 教程

Spring Boot Web JasperReports 集成

Spring Boot iText 教程

Spring Boot cmd JasperReports 集成

Spring Boot RESTFul 應用

Spring Boot 第一個 Web 應用

Spring Boot Groovy CLI

Spring Boot 上傳文件

Spring Boot @ExceptionHandler

Spring Boot @ResponseStatus

Spring Boot ResponseEntity

Spring Boot @Controller

Spring Boot @RestController

Spring Boot @PostConstruct

Spring Boot @Component

Spring Boot @ConfigurationProperties教程

Spring Boot @Repository

Spring Boot MongoDB 教程

Spring Boot MongoDB Reactor 教程

Spring Boot PostgreSQL 教程

Spring Boot @ModelAttribute

Spring Boot 提交表單教程

Spring Boot Model

Spring Boot MySQL 教程

Spring Boot GenericApplicationContext

SpringApplicationBuilder教程

Spring Boot Undertow 教程

Spring Boot 登錄頁面教程

Spring Boot RouterFunction 教程

ZetCode Symfony 教程

Symfony DBAL 教程

Symfony 表單教程

Symfony CSRF 教程

Symfony Vue 教程

Symfony 簡介

Symfony 請求教程

Symfony HttpClient教程

Symfony Flash 消息

在 Symfony 中發(fā)送郵件

Symfony 保留表單值

Symfony @Route注解教程

Symfony 創(chuàng)建路由

Symfony 控制臺命令教程

Symfony 上傳文件

Symfony 服務教程

Symfony 驗證教程

Symfony 翻譯教程

【插件開發(fā)】—— 7 SWT布局詳解,不能再詳細了! - xingoo - 博客園

【插件開發(fā)】—— 7 SWT布局詳解,不能再詳細了! - xingoo - 博客園

會員

周邊

新聞

博問

AI培訓

云市場

所有博客

當前博客

我的博客

我的園子

賬號設置

簡潔模式 ...

退出登錄

注冊

登錄

xingoo

博客園

首頁

管理

【插件開發(fā)】—— 7 SWT布局詳解,不能再詳細了!

前文回顧:

1?插件學習篇

2?簡單的建立插件工程以及模型文件分析

3?利用擴展點,開發(fā)透視圖

4?SWT編程須知

5?SWT簡單控件的使用與布局搭配

6 SWT復雜空間與布局搭配

  前面幾篇都提到了SWT的布局,布局系統(tǒng)也為規(guī)整的UI提供了保障。那么如何設計一個布局呢?

  Eclipse的布局機制,提供了兩個對象概念,Layout(描述內部布局方式)以及GridData(描述本身布局方式)。

  什么是Layout?

  首先說一下Layout,layout定義了一個空間內部的布局格式。比如我們把箱子作為一個整體,那么箱子內部該怎么去設計,怎么放置東西進去,就需要用layout來指定。

  

  而常用的布局方式,就包括FillLayout,gridLayout,RowLayout,以及FormLayout。

  下面就針對這幾種布局進行一下介紹:

  Filllayout

  也叫做填充布局,它會讓里面的子空間以填充的方式進行布局。

  比如我們采用如下的設計方式:

FillLayout layout = new FillLayout();

shell.setLayout(layout);

for(int i=0;i<10;i++){

Button button = new Button(shell,SWT.PUSH);

button.setText("Button"+i);

}

  正常的布局是這樣的:

  經過拉伸就變成了這樣:

?

  RowLayout

  也叫行布局,它會讓內部的子空間以行為單位進行排列,遇到邊界時,自動換成下一行。

     RowLayout layout = new RowLayout();

shell.setLayout(layout);

for(int i=0;i<10;i++){

Button button = new Button(shell,SWT.PUSH);

Image img = new Image(null,"icons\\ok.png");

button.setImage(img);

button.setText("Button"+i);

}

  得到的結果是這樣的:

  當壓縮邊界的時候,會自動換行

  GridLayout

  也叫做網格布局,它以規(guī)定網格的形式,指定每一行有多少列,元素會以每列幾個的方式進行排列,超出的部分擠到下一行。

  

   GridLayout layout = new GridLayout();

layout.numColumns = 3;

shell.setLayout(layout);

for(int i=0;i<10;i++){

Button button = new Button(shell,SWT.PUSH);

Image img = new Image(null,"icons\\ok.png");

button.setImage(img);

button.setText("Button"+i);

}

  當指定每行有3個子控件時,無論怎么改變窗口的大小,都不會改變排列的方式

 

  當改變窗口大小時,不會發(fā)生變化

?

  FormLayout

  感覺這個是最難使用的了,它會以一個Form表單的形式提供布局。先看一下使用方式吧:

   FormLayout layout = new FormLayout();

shell.setLayout(layout);

Button cancelButton = new Button(shell,SWT.PUSH);

cancelButton.setText("Cancel");

FormData formData1 = new FormData();

formData1.right = new FormAttachment(100,-5); //第一個數(shù)字式百分比,也就是說 【寬度-5】

formData1.bottom = new FormAttachment(100,-5); //第一個數(shù)字式百分比,也就是說 【高度-5】

cancelButton.setLayoutData(formData1);

Button okButton = new Button(shell,SWT.PUSH);

okButton.setText("OK");

FormData formData2 = new FormData();

formData2.right = new FormAttachment(100,-60);

formData2.bottom = new FormAttachment(100,-5);

okButton.setLayoutData(formData2);

Text text = new Text(shell,SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);

FormData formData3 = new FormData();

formData3.top = new FormAttachment(0,5);

formData3.bottom = new FormAttachment(cancelButton,-5);//底部距離 【底部控件-5個像素】

formData3.left = new FormAttachment(0,5);

formData3.right = new FormAttachment(100,-5);

text.setLayoutData(formData3);

Color color = new Color(null,255,0,0);

text.setForeground(color);

  可以看到他提供了一個FormData的布局方式,通過FormAttachment實現(xiàn),這個類需要兩個參數(shù),第一個是寬度(left或者right)或者高度(top或者bottom)的百分比,第二個參數(shù)是它相對加上的值。如果是負數(shù),就是減去的像素值。而且提供Control類型的參數(shù),也就是控件類型的參數(shù)。如果第一個參數(shù)指定一個控件,比如上面指定的那個bottom,那么他會自動獲取這個控件對應的高度,在進行加減。

  這樣就保證了,某些控件的相對位置保持不變。

  下面看一下效果:

拉伸后編程

?

  什么是GridData呢?又該如何使用呢?

  下面介紹一下GridData,這個也是一個重量級的參數(shù):

  這個參數(shù)用于指定目標如何擺放,它描述了以表格為單位的布局。

  它描述了空間本身的一個布局擺放的方式:

  并且搭配之前的GridLayout布局,通過每行有幾列的方式,控制布局。先看一下都有什么參數(shù),以及參數(shù)描述的意義:

  GridData griddata = new GridData(SWT.FILL,SWT.FILL,false,false,1,1);

  一般都是上面這樣的參數(shù)格式:

  第一個參數(shù):水平方向如何對齊

  第二個參數(shù):豎直方向如何對齊

  第三個參數(shù):是否占用水平的剩余空間

  第四個參數(shù):是否占用豎直的剩余空間

  第五個參數(shù):水平的列數(shù)

  第六個參數(shù):豎直的行數(shù)

  這樣一來,舉個例子就簡單了。

  比如我們指定了一個表格是三行三列的,那么通過設定

  第一個控件參數(shù)是(SWT.FILL,SWT.FILL,false,false,1,1);

  第二個參數(shù)是(SWT,SWT,false,false,1,2);

  第三個參數(shù)是(SWT.FILL_BOTH);

  第四個得到如下的布局:(SWT.FILL,SWT.FILL,false,false,1,1);

?

  這樣我們得到如下的布局:

  感覺上面的圖頓時拉低了文章的檔次,湊合看吧??梢钥吹降诙€控件,通過指定真的占用了兩列。

  但是第三個的FILL_BOTH并沒有按照預期占用了剩余的所有控件,這就說明,填充布局還是不會垮行到下一列的布局的。

?

  另外添加兩個小知識,就是使用顏色以及圖片。

  顏色通常使用RGB來指定:

Color color = new Color(null,255,0,0);

text.setForeground(color);

  顏色的第一參數(shù)是Device,可以填寫為null;

  而圖片也圖普通的控件一樣,需要指定一個ImgData來指定圖片的URL即可:

Image img = new Image(null,"icons\\ok.png");

button.setImage(img);

?

  下面是這個例子所用到的代碼:

package com.xingoo.plugin.swttest.test;

import org.eclipse.swt.SWT;

import org.eclipse.swt.graphics.Color;

import org.eclipse.swt.graphics.Image;

import org.eclipse.swt.layout.FillLayout;

import org.eclipse.swt.layout.FormAttachment;

import org.eclipse.swt.layout.FormData;

import org.eclipse.swt.layout.FormLayout;

import org.eclipse.swt.layout.GridData;

import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.layout.RowLayout;

import org.eclipse.swt.widgets.Button;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.widgets.Text;

import com.xingoo.plugin.swttest.Abstract.AbstractExample;

public class LayoutTest extends AbstractExample{

public static void main(String[] args) {

new LayoutTest().run();

}

public void todo(Shell shell) {

//////////////////////////////////////////////////////

//FillLayout

//////////////////////////////////////////////////////

// FillLayout layout = new FillLayout();

// shell.setLayout(layout);

// for(int i=0;i<10;i++){

// Button button = new Button(shell,SWT.PUSH);

// button.setText("Button"+i);

//

//// Image img = new Image(null,"icons\\ok.png");

//// button.setImage(img);

// }

//////////////////////////////////////////////////////

//RowLayout

//////////////////////////////////////////////////////

// RowLayout layout = new RowLayout();

// shell.setLayout(layout);

// for(int i=0;i<10;i++){

// Button button = new Button(shell,SWT.PUSH);

// Image img = new Image(null,"icons\\ok.png");

// button.setImage(img);

// button.setText("Button"+i);

// }

//////////////////////////////////////////////////////

//GridLayout

//////////////////////////////////////////////////////

// GridLayout layout = new GridLayout();

// layout.numColumns = 3;

// shell.setLayout(layout);

// for(int i=0;i<10;i++){

// Button button = new Button(shell,SWT.PUSH);

// Image img = new Image(null,"icons\\ok.png");

// button.setImage(img);

// button.setText("Button"+i);

// }

GridLayout layout = new GridLayout();

layout.numColumns = 3;

shell.setLayout(layout);

Button btn1 = new Button(shell,SWT.PUSH);

GridData gd1 = new GridData(SWT.FILL,SWT.FILL,false,false,1,1);

gd1.widthHint = 100;

gd1.heightHint = 100;

btn1.setLayoutData(gd1);

Button btn2 = new Button(shell,SWT.PUSH);

GridData gd2 = new GridData(SWT.FILL,SWT.FILL,false,false,1,2);

gd2.widthHint = 100;

gd2.heightHint = 100;

btn2.setLayoutData(gd2);

Button btn3 = new Button(shell,SWT.PUSH);

GridData gd3 = new GridData(GridData.FILL_BOTH);

// gd3.widthHint = 100;

// gd3.heightHint = 100;

btn3.setLayoutData(gd3);

Button btn4 = new Button(shell,SWT.PUSH);

GridData gd4 = new GridData(SWT.FILL,SWT.FILL,false,false,1,1);

gd4.widthHint = 100;

gd4.heightHint = 100;

btn4.setLayoutData(gd4);

//////////////////////////////////////////////////////

//FormLayout

//////////////////////////////////////////////////////

// FormLayout layout = new FormLayout();

// shell.setLayout(layout);

//

// Button cancelButton = new Button(shell,SWT.PUSH);

// cancelButton.setText("Cancel");

// FormData formData1 = new FormData();

// formData1.right = new FormAttachment(100,-5); //第一個數(shù)字式百分比,也就是說 【寬度-5】

// formData1.bottom = new FormAttachment(100,-5); //第一個數(shù)字式百分比,也就是說 【高度-5】

// cancelButton.setLayoutData(formData1);

//

// Button okButton = new Button(shell,SWT.PUSH);

// okButton.setText("OK");

// FormData formData2 = new FormData();

// formData2.right = new FormAttachment(100,-60);

// formData2.bottom = new FormAttachment(100,-5);

// okButton.setLayoutData(formData2);

//

// Text text = new Text(shell,SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);

// FormData formData3 = new FormData();

// formData3.top = new FormAttachment(0,5);

// formData3.bottom = new FormAttachment(cancelButton,-5);//底部距離 【底部控件-5個像素】

// formData3.left = new FormAttachment(0,5);

// formData3.right = new FormAttachment(100,-5);

// text.setLayoutData(formData3);

// Color color = new Color(null,255,0,0);

// text.setForeground(color);

}

}

View Code

  當然,最好是參考前幾篇例子,可以真正體會到布局的妙處!

作者:xingoo

出處:http://www.cnblogs.com/xing901022

本文版權歸作者和博客園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接!

posted @

2014-11-14 23:02?

xingoo?

閱讀(22274)?

評論(0)?

編輯?

收藏?

舉報

會員力量,點亮園子希望

刷新頁面返回頂部

公告

Copyright ? 2024 xingoo

Powered by .NET 8.0 on Kubernetes

SWT Documentation | The Eclipse Foundation

SWT Documentation | The Eclipse Foundation

Skip to main content

Log in

Manage Cookies

Sponsor

EclipsePlatformSWTAbout Community MarketplaceEventsPlanet EclipseNewsletterVideosBlogsParticipate Report a BugForumsMailing ListsWikiIRCResearchEclipse IDE DownloadLearn MoreDocumentationGetting Started / SupportHow to ContributeIDE and ToolsNewcomer Forum

More

CommunityMarketplaceEventsPlanet EclipseNewsletterVideosBlogsParticipateReport a BugForumsMailing ListsWikiIRCResearchEclipse IDEDownloadLearn MoreDocumentationGetting Started / SupportHow to ContributeIDE and ToolsNewcomer Forum

Search

Toggle navigation

Breadcrumbs

HomeProjectsswtDocumentation

SWT Documentation

This page contains links to books, tutorials, and articles about SWT.

SWT in Books

SWT is in print in the following books.

"SWT: The Standard Widget Toolkit, Volume 1" by Steve Northover and Mike Wilson

This book can be read online at the

publisher's web site.

"The Definitive Guide to SWT and JFace" by Rob Warner and Robert Harris

"The Java Developer's Guide to Eclipse, Second Edition" by Jim D'Anjou, Scott Fairbrother, Dan Kehn, John Kellerman, and Pat McCarthy (Chapter 14)

"Contributing to Eclipse: Principles, Patterns, and Plugins" by Erich Gamma and Kent Beck (Chapter 34)

"Eclipse in Action: A Guide for the Java Developer" by David Gallardo, Ed Burnette, and Robert McGovern (Appendix D)

"Eclipse Rich Client Platform: Designing, Coding, and Packaging Java(TM) Applications" by Jeff McAffer and Jean-Michel Lemieux

"Eclipse: Building Commercial-Quality Plug-ins" by Eric Clayberg and Dan Rubel

"SWT/JFace in Action: GUI Design with Eclipse 3.0" by Matthew Scarpino, Stephen Holder, Stanford Ng and Laurent Mihalkovic

"Eclipse" and

"Eclipse Cookbook" by Steve Holzner

SWT Documentation Inside Eclipse

The Eclipse Help system contains good solid documentation for SWT in

the Platform Plug-in Developer Guide. To get there in Eclipse, select

Help > Help Contents >

Platform Plug-in Developer Guide.

SWT documentation appears in the following sections of the

Platform Plug-in Developer Guide:

Programmer's Guide: Standard Widget Toolkit

Reference: API Reference: org.eclipse.swt.* (javadoc for each package)

Examples Guide: Standard Widget Toolkit

SWT Online Documentation

In addition to reading SWT documentation inside Eclipse, you can read it online here:

Programmer's Guide

API Reference

Examples Guide

Online javadoc

Older versions of the Eclipse documentation

SWT Articles at eclipse.org and eclipse.org/swt

Articles at eclipse.org:

Articles about SWT on Eclipse Corner at eclipse.org (20 at last count)

Articles at eclipse.org/swt:

How to develop SWT applications in Eclipse

How to run the ControlExample and other SWT examples

How to deploy SWT applications on Mac OS X

How to generate the SWT JNI Code for Cocoa

How to deploy SWT applications using Java Web Start

How to use SWT from GIT

How to generate the SWT JNI Code

Using OpenGL with SWT 3.2

How to fix a bug in SWT

More Articles about SWT

External articles, interviews in online journals:

SWT articles published in OS News:

Desktop Java with SWT: an interview with Steve Northover

SWT articles on IBM Developerworks Library:

Equipping SWT applications with content assistants

SWT Online Tutorials

There have been a few tutorials posted about SWT that you may find useful:

Getting Started with Eclipse and SWT

This site contains some tutorials and example programs that will help programmers who are

new to Eclipse and the Standard Widget Toolkit (SWT) install Eclipse correctly and run some

simple Java/SWT programs.

Compiling Eclipse Applications for Windows With GCJ/MinGW

A guide for compiling an SWT application into an executable.

An introduction to SWT

Adapted from "SWT and JFace", a No Fluff Just Stuff 2004 presentation.

SWT Home

Widgets

Snippets

Examples

FAQ

Tools

Javadoc

Documentation

Community

Bugs

Contact Us

Back to the top

Eclipse Foundation

About UsContact UsSponsorMembersGovernanceCode of ConductLogo and ArtworkBoard of DirectorsCareers

Legal

Privacy PolicyTerms of UseComplianceEclipse Public LicenseLegal Resources

Useful Links

Report a BugDocumentationHow to ContributeMailing ListsForumsMarketplace

Other

IDE and ToolsProjectsWorking GroupsResearch@EclipseReport a VulnerabilityService Status

Copyright ? Eclipse Foundation AISBL. All Rights Reserved.

Back to the top

學過JAVA ,想學GUI。網友說swing awt被淘汰了。請教現(xiàn)在主流的JAVA gui開發(fā)學啥? - 知乎

學過JAVA ,想學GUI。網友說swing awt被淘汰了。請教現(xiàn)在主流的JAVA gui開發(fā)學啥? - 知乎首頁知乎知學堂發(fā)現(xiàn)等你來答?切換模式登錄/注冊圖形用戶界面用戶界面設計Swing(Java)學過JAVA ,想學GUI。網友說swing awt被淘汰了。請教現(xiàn)在主流的JAVA gui開發(fā)學啥?關注者82被瀏覽286,476關注問題?寫回答?邀請回答?好問題 4?2 條評論?分享?19 個回答默認排序圓胖腫Java mayb late bt never absent? 關注稍微講一下java gui的歷史吧,java的gui的延伸其實還包括了安卓以及谷歌做的那些努力java最早的圖形控件就是awt,這個沒問題,但是awt做的事很少,基本上只是做一點簡單的包裝,所以如果你用的是awt的話,你可能會有比較多的工作要做,比如你想做動畫,用awt就會遇到屏幕閃爍的問題,所以你要去弄離屏表面,然后渲染完之后再flip過去,這個屬于極為低端的技術,awt這種低層次的封裝你就必需要用這種手段,開發(fā)很慢,其實你用c之類的,估計還能遇到這種問題這是第一個階段那后來就出現(xiàn)了一個發(fā)展,sun當時發(fā)展出了swing,但是這時候爆發(fā)了一個巨大的導致分裂的沖突,那就是ibm當時提出了使用swt,而sun提出了swing,swt代表著native widget的分支和走向,而swing則代表了emulate widget的分支和走向這兩者的區(qū)別呢,我這里簡單說一下,native widget的做法主張,更多地復用操作系統(tǒng)本身的控件和樣式,舉個例子,比如windows提供了圖形庫directx3d,macosx提供了圖形庫是metal,標準則是opengl和vulkan,那么swt一派就認為,我們應該提供一個統(tǒng)一的api,然后這個api在實現(xiàn)的時候,根據(jù)操作系統(tǒng)的差異,自動選擇不同的圖形庫予以使用,這樣這個api就是一層thin wrapper,這樣做的好處就是,你可以很快滴利用上操作系統(tǒng)提供的各種圖形庫,比如win上就用directx,mac上就用metal,etc.還有窗口的樣式等,但是壞處就是,你在不同的操作系統(tǒng)上,看到的樣式什么的,會有差異,比如swt在它網站上給出的幾個例子就很好滴說明這一點,不同操作系統(tǒng)上的展示有明顯的不同,如下圖:同樣的窗口在不同操作系統(tǒng)上的展示,很明顯可以看出很多差異來那swing則表示,這個太不跨平臺了,java應該編譯一次,然后到處運行,而且到處運行時候看起來應該是一樣的,徹底屏蔽操作系統(tǒng)帶來的差異,應該做一層thick wrapper,厚包裝,那這樣做的壞處有幾個,第一個就是不同操作系統(tǒng)的圖形庫不一樣,那強行一致的結果就是,只能用最弱雞的那個去搞了,當時標準是opengl,那就是opengl了,在win上也用不了directx,而且不是所有的操作系統(tǒng)都有這么高級的渲染工具的,所以swing還缺省提供了一個沒有硬件加速,純軟件渲染的界面,而且更要命的是,缺省是不開硬件加速的,所以這就導致swing做出來的時候,慢,因為沒開硬件加速,哪怕你的顯卡支持你能用硬件加速渲染,它還是缺省會用純軟件渲染,然后你要懂怎么開硬件加速才能實現(xiàn)你想要的效果,就像很多人可能至今都不知道idea的vmoption其實是可以開硬件加速的吧?在help里面,選擇vmoption,然后添加上這一行:-Dsun.java2d.opengl=true,以啟動硬件加速參考:https://stackoverflow.com/questions/4627320/java-hardware-acceleration而且還很要命的一點,swing的組長似乎對于gui好看不好看沒有什么概念,缺省用的是unix那一套gui,就是幾十年前的那種gui,這里貼出蘋果早期的gui,macos也是freebsd的變種,都是unix的一員,所以早期版本的gui還保留了比較多unix原始的形態(tài),看看就能感覺出來跟swing那個是不是很像了,看拖動條的紫色,幾乎一摸一樣unix gui早期機能所限,能做成這樣已經很好了,但是進入90年代之后,還在畫這種窗口,那就只能給人感覺原始了這是第二個階段,這個階段的過程就是swing和swt兩邊吵翻天,內訌,最后java在gui上大敗,鎩羽而歸,因為swing缺省的界面丑,慢,加上java早期本身也不怎么快,所以java在gui上幾乎是沒有咬下任何市場,早期在智能機上的j2me也被教主復出之后的iphone搞死了,swt最大的遺產就是eclipse了,swing最大的遺產就是idea還有netbeans了然后進入第三個階段,java后來發(fā)現(xiàn),swing這個搞法不是個辦法,沒人用,sun在臨死之前,總算頭腦清醒了一回,走回swt的道路,搞出了javafx,然后sun就掛了,一開始是找ibm收購,ibm嫌貴,不買,然后sun才去找oracle收購,javafx也跟swt一樣,根據(jù)os會自動選擇不同的圖形庫,比如win上用的就是directx3d,mac上用的就是metal(將來,參考project lanai)那這里還有一個分支,那就是教主復出之后,把iphone搞起來了,一搞起來就把可以裝在j2me的智能機給搞死了,然后有一家公司叫做Google,Google其實在sun作為java當家的時候,Google大量參與了java標準的制定,一個是Google一個是Apache,這倆貨幾乎常年都在jcp執(zhí)行委員會里呆著,所以java早期的大量標準的制定,都跟這倆貨有很大關系。那Google看到蘋果做出了iphone之后,就有樣學樣,弄出了安卓,當然一開始是魯賓做的,然后Google收購來的,但是Google在安卓上使用的是一個魔改的java,所以保留了很多java原始的特性,當然Google拿到java之后,它就沒照搬swing,但是呢,它保留了很多swing的影子,然后在Google被oracle告了之后,另劈新道,搞出了dart,flutter這些東西,而Google的skia引擎目前主要還是依賴opengl渲染,將來會加入vulkan渲染,因為這兩是標準,這就跟swing很像了你看,這個階段swt變成了javafx,swing承認失敗,java2d組開始更多地投入javafx,而javafx的設計沿襲了swt的設計,就是對操作系統(tǒng)底層的api做一層thin wrapper,但是安卓這邊,則更多地延續(xù)了swing的設計,到了flutter階段,實際上Google也還是自己做一層thick wrapper,flutter能保證不同操作系統(tǒng)上看到的界面是一樣的,如果你用的是material design的話,那在ios上也有漣漪效果,如果你用的是cuptertino的話,那你在安卓機器上也能看到金屬高光,但是這樣做成本就高,但是Google有錢也有人,而且一直有傳言說,Google招了太多人進去,無事可做,所以安排點工作給他們去做,哪怕這些工作只是重復造輪子,但是總比讓他們閑著好,所以就讓他們去造更快更好的輪子吧。flutter的設計就有一點這種味道在里面,什么都自己做,而且Google還做得相當不錯但是java沒那么多人,所以javafx就選擇了更加雞賊一點的道路,做一層thin wrapper,看上去不一樣就不一樣,跨平臺能用就行,javafx的組其實沒有那么多人,常見就那么幾個,johan,kevin,還有巴西人博格斯,其實沒幾個,flutter team的規(guī)模遠比javafx的開發(fā)規(guī)模要大得多那這個階段就是我們目前正在經歷的階段,如果你問java gui用啥,那就是javafx,這個是java所有項目的共識,javafx也比較容易擴展,13之后,你都可以用native的手段來渲染,可以借助nativefx或者是driftfx項目,然后用上比如qt之類的控件。這里說一下,javafx的社區(qū)可以看到很多說德語的人,來自德國,奧地利,瑞士等,很多相關項目都是德國人在做,德國人在這種工程領域上造詣可見一斑。如果你不糾結于java自身,那你也可以看看flutter這些,dart/flutter其實就是Google版的java/javafx,因為dart以及dartvm的作者之一lars bak本身就是缺省jvm hotspot的作者,它的很多設計,原理什么,都跟java社區(qū)的差不多,不能說完全一樣,但是你都能看到很多共同點,比如pub就是maven,skia就是prism,dart就是java,如果你會java的話,搞dart很快,分分鐘上手總結一下,第一階段awt,第二階段swing和swt,第三階段javafx和flutter如果你要學,學最后兩個編輯于 2019-09-02 23:30?贊同 342??14 條評論?分享?收藏?喜歡收起?子謙幻想學者? 關注Java的GUI我倒是用過不少。Swing的話是Java最傳統(tǒng)的GUI了,初始界面不怎么樣,但是有很多LookAndFeel,如果想偷懶可以直接使用其他人封裝的LookAndFeel改變界面,效果也是不錯的,Swing經過了這么久的發(fā)展,已經十分成熟,多數(shù)的坑都能夠找到解決辦法,淘汰到算不上,不過好像已經不更新了,因為Java在主推另一個GUI技術,JavaFX。JavaFX是Java目前官方推薦的GUI技術,XML進行布局,支持CSS,你學過HTML之類的WEB開發(fā)的話,應該知道CSS是個啥,他的界面極其靈活,通過FXML和CSS也能夠很快速的構建界面,但是系統(tǒng)的資源消耗會比較大,不過這應該不是什么問題吧。它還直接支持音頻視頻和動畫效果,好像還有3D功能,不過現(xiàn)在應該還不穩(wěn)定,JavaFX應該還是可以移植到Android的,ios不是很清楚。但是這個東西在windows之外的平臺上面會有坑點,要特別注意。SWT、JFace,這個是Eclipse用的技術,就是那個Java的開發(fā)工具Eclipse,還可以吧,但是需要一些平臺相關的東西,用起來稍微有點別扭,UI里面有些細節(jié)不能自己控制,但是界面的效率會高一些,畢竟是直接的JNI,很多是直接使用系統(tǒng)本身的控件,好像是支持CSS的,反正我沒用出來過。QtJambi,Qt的Java版,Qt本身是c++的類庫,這個是給java提供的語言綁定,不過qt的話只到了Qt4,也不知道有沒有人繼續(xù)更新維護。這個版本提供的設計器好像有點問題,不過可以自己編寫代碼進行設計,反正設計器的ui文件最終也會變成java代碼,如果你用過Qt的話可以試試。Gnome-Java,Linux系統(tǒng)可以試試,因為他不支持windows,我沒有用過他,只是知道而已。哦,對了,AWT,不知道你為啥會提到這個,現(xiàn)在你就當他不存在好了,基本是不會直接使用AWT的。2020 - 8 -14 更新Java版本有了一個新的Qt封裝,基于javacpp技術,這個應該比較新,喜歡qt的應該可以嘗試一下,名字叫做JavaCPP Presets For Qt,我們可以直接在maven搜索qt就能找到,它依賴于JavaCPP Presets For Qt Platforms,所以需要在maven中加入他。編輯于 2020-08-14 10:04?贊同 33??4 條評論?分享?收藏?喜歡

【SWT】常用代碼(二)-阿里云開發(fā)者社區(qū)

【SWT】常用代碼(二)-阿里云開發(fā)者社區(qū)

產品解決方案文檔與社區(qū)權益中心定價云市場合作伙伴支持與服務了解阿里云售前咨詢 95187-1 在線服務售后咨詢 4008013260 在線服務其他服務 我要建議 我要投訴更多聯(lián)系方式備案控制臺開發(fā)者社區(qū)首頁探索云世界探索云世界云上快速入門,熱門云上應用快速查找了解更多問產品動手實踐考認證TIANCHI大賽活動廣場活動廣場豐富的線上&線下活動,深入探索云世界任務中心做任務,得社區(qū)積分和周邊高校計劃讓每位學生受益于普惠算力訓練營資深技術專家手把手帶教話題暢聊無限,分享你的技術見解開發(fā)者評測最真實的開發(fā)者用云體驗乘風者計劃讓創(chuàng)作激發(fā)創(chuàng)新阿里云MVP遇見技術追夢人直播技術交流,直擊現(xiàn)場下載下載海量開發(fā)者使用工具、手冊,免費下載鏡像站極速、全面、穩(wěn)定、安全的開源鏡像技術資料開發(fā)手冊、白皮書、案例集等實戰(zhàn)精華插件為開發(fā)者定制的Chrome瀏覽器插件探索云世界新手上云云上應用構建云上數(shù)據(jù)管理云上探索人工智能云計算彈性計算無影存儲網絡倚天云原生容器serverless中間件微服務可觀測消息隊列數(shù)據(jù)庫關系型數(shù)據(jù)庫NoSQL數(shù)據(jù)庫數(shù)據(jù)倉庫數(shù)據(jù)管理工具PolarDB開源向量數(shù)據(jù)庫熱門Modelscope模型即服務彈性計算云原生數(shù)據(jù)庫物聯(lián)網云效DevOps龍蜥操作系統(tǒng)平頭哥釘釘開放平臺大數(shù)據(jù)大數(shù)據(jù)計算實時數(shù)倉Hologres實時計算FlinkE-MapReduceDataWorksElasticsearch機器學習平臺PAI智能搜索推薦人工智能機器學習平臺PAI視覺智能開放平臺智能語音交互自然語言處理多模態(tài)模型pythonsdk通用模型開發(fā)與運維云效DevOps釘釘宜搭支持服務鏡像站碼上公益

開發(fā)者社區(qū)

開發(fā)與運維

文章

正文

【SWT】常用代碼(二)

2023-08-16

89

版權

版權聲明:

本文內容由阿里云實名注冊用戶自發(fā)貢獻,版權歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權,亦不承擔相應法律責任。具體規(guī)則請查看《

阿里云開發(fā)者社區(qū)用戶服務協(xié)議》和

《阿里云開發(fā)者社區(qū)知識產權保護指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內容,填寫

侵權投訴表單進行舉報,一經查實,本社區(qū)將立刻刪除涉嫌侵權內容。

簡介:

【SWT】常用代碼(二)

零零年夏

目錄

熱門文章

最新文章

為什么選擇阿里云什么是云計算全球基礎設施技術領先穩(wěn)定可靠安全合規(guī)分析師報告產品和定價全部產品免費試用產品動態(tài)產品定價價格計算器云上成本管理解決方案技術解決方案文檔與社區(qū)文檔開發(fā)者社區(qū)天池大賽培訓與認證權益中心免費試用高校計劃企業(yè)扶持計劃推薦返現(xiàn)計劃支持與服務基礎服務企業(yè)增值服務遷云服務官網公告健康看板信任中心關注阿里云關注阿里云公眾號或下載阿里云APP,關注云資訊,隨時隨地運維管控云服務售前咨詢:95187-1售后服務:400-80-13260法律聲明及隱私權政策Cookies政策廉正舉報安全舉報聯(lián)系我們加入我們阿里巴巴集團淘寶網天貓全球速賣通阿里巴巴國際交易市場1688阿里媽媽飛豬阿里云計算AliOS萬網高德UC友盟優(yōu)酷釘釘支付寶達摩院淘寶海外阿里云盤餓了么? 2009-2024 Aliyun.com 版權所有 增值電信業(yè)務經營許可證: 浙B2-20080101 域名注冊服務機構許可: 浙D3-20210002 京D3-20220015浙公網安備 33010602009975號浙B2-20080101-4

404 Not Found


nginx/1.25.2
小13箩利洗澡无码免费视频| 亚洲成AV人无码不卡影片| 无码久久精品国产亚洲AV影片| 精品无人区一码卡二卡三| 熟妇的奶头又大又长奶水视频| A级毛片免费观看在线播放| 18禁无码无遮挡在线播放| 国产精品国产三级国产AV中文| 欧美丰满大乳大屁股流白浆| 无码av一区二区三区无码| 亚洲色成人四虎在线观看| 午夜精品影视国产一区在线麻豆| 乱码视频午夜在线观看| 国产成人无码AV大片大片在线观看| 少妇刚干完一次还要再干一次| www国产亚洲精品久久网站| 欧美极品少妇XXXXⅩ另类| 思思99re6国产在线播放| 99久久婷婷国产综合精品青草免费| 亚洲精品中文字幕乱码4区| 国产69囗曝吞精在线视频| 97国产精华最好的产品价格| 亚洲 欧美 唯美 国产 伦 综合| 国产A V无码专区亚洲AV| 国产国产国产国产系列| 久久无码中文字幕东京热| 国产亚洲日韩网曝欧美台湾| 无码专区视频中文字幕| 无码AV岛国片在线播放| 欧美熟妇与小伙性欧美交| 同性男男黄g片免费网站| 永久免费av无码网站在线观看| 无码人妻一区二区三区免费N鬼逝| 色偷偷色噜噜狠狠网站年轻人| 自拍偷在线精品自拍偷99| 中文字幕久久久人妻无码| 国产午夜精品久久久久免费视| 国产爆乳无码一区二区麻豆| 无码人妻久久一区二区三区APP| 亚洲一卡2卡三卡4卡国色天香| 成全影院电视剧在线观看|