2013-08-18 95 views
0

我是java中的完整初學者。雖然我已經學習了很多關於語言的文獻(很好),但這是我第一個真正的項目。關於java中的bulding gui和小部件

我基本上打算做一個簡單的時鐘小部件,後來打算建立Gui s。直到現在,我已經學會了揮杆。但後來我在這個網站上發現Swing有點過時 (ref:Java GUI frameworks. What to choose? Swing, SWT, AWT, SwingX, JGoodies, JavaFX, Apache Pivot?)。

我需要的是在java中的一些好的庫來幫助我在這個過程中(時鐘部件和隨後更復雜的GUI)。所以我想從jgoodies,免費的圖書館。

現在我完全困惑和搞砸了該做什麼和不理解任何東西。當然,我不需要書籍在設計模式等等等等。只是java引用和gui上的一些教程使用java和jgoodies讓我開始。我無法在任何地方找到它們。 所以請給我指出正確的方向。

閱讀背景(頭的第一個Java,Java的完整參考和數據結構和算法中)

(推薦人如果沒有足夠的)

+0

java.sun.com和其中的參考文獻是Java語言基礎知識的最佳來源。 Oracle現在擁有Java,所以這裏也可能有很好的資源。 – abiessu

回答

0

我需要的是在Java中一些好的庫,以協助我在這個過程中(時鐘部件,隨後更復雜的圖形用戶界面)。所以我想從jgoodies,免費的圖書館。

也許你不需要像你認爲的那樣需要圖書館。從最初的原則學習東西,你會更好地學習它。

所有主要的Java GUI框架都已經相當高級和功能。當你第一次開始時,我認爲你應該跳過第三方庫,看看你在基礎JRE和你選擇的框架中提供了多少。只用基本框架,Java語言和JRE就足夠了。如果您嘗試在其他框架中過早添加,最終會導致過載,困惑和生產力下降。另外,增加圖書館的抽象可能會妨礙你足夠好地學習一些重要的基本原則。

一旦你在大樓的東西多一點經驗,那麼你將有一個更好的主意,其中在框架的差距是您的應用程序,你可以在第三方庫在那個時候添加。

規劃做一個簡單的時鐘部件

如果您遇到問題,這裏是一個JavaFX時鐘代碼:How to draw a clock with JavaFX 2?Swing有着相似的應用。

注意,創建一個時鐘比創建一個傳統形式的基於GUI,使得使用預定義的控件庫的有點不同 - 但任何主要的Java GUI框架,可同時處理任務。

不要讓時鐘成爲您的第一個GUI編程任務,更輕鬆一些。然後嘗試稍後創建一個時鐘。

使用擺動精確的佈局確實是一個困難的工作

有交互式圖形佈局管理器的Swing和其他框架(例如優秀的SceneBuilder爲JavaFX),這使它更容易些。

但是,首次啓動時,可能值得手工編寫代碼,而不是讓工具爲您管理佈局(例如,在學習JavaFX時,僅使用Java API,並且在完全舒適之前不要使用FXML與Java API)。您將通過這種方式更好地瞭解佈局管理和其他事情的細節。當然你會犯一些錯誤,會有一些挫敗感,但是事情會隨着時間的推移而變得清晰起來。你最終可能最終決定你更喜歡手工編碼,而不是使用圖形工具。

棘手的部分通常是創造高質量,動態調整大小的圖形用戶界面好看在不同的分辨率和窗口大小 - 這通常是棘手的初學者,無論使用什麼GUI工具包。

JavaFX中的佈局管理器非常類似於Swing中的基本佈局管理器 - 所以佈局明智有兩個框架之間的差別不大。

保留模式場景圖JavaFX中可以更容易一點比搖擺的直接模式的繪畫工作,但我想這是不是很相關的佈局。

內省工具,如ScenicView JavaFX的,在運行時緩解調試佈局。把ScenicView這樣的東西想象成類似於Firebug for HTML的東西(例如你的基本佈局調試伴侶)。

現在我完全困惑和搞砸了該做什麼,不明白什麼。

你明白你比你認爲的要多,或者你不會問這個問題。你應該做什麼(IMO)只是選擇一個Java GUI框架(任何框架 - 它們都是可以通過的),選擇一個體面的開始任務(看起來很簡單 - 甚至比一個時鐘更簡單)並開始編碼。使所有任務相關;非常小的任務和明確的最終目標。寫出大量的代碼,總是回過頭來修改你的代碼,並且它的輸出是爲了儘可能使它達到最佳狀態 - 不要滿足於足夠的程度。

嘗試畫彩虹和幸福的笑臉 - 當你的代碼,看看它在屏幕上,你會自我感覺良好:-)

如果您需要在Java語言進修,跟隨甲骨文Learning the Java Language trail 。這是我多年前學習Java的方式。多年來一直保持這種狀態,所以它今天仍然是一個很好的資源和有用的資源。

如果您選擇Swing,請按照來自MadProgrammer的起始鏈接。

如果您選擇JavaFX,請遵循JavaFX tutorialsEnsemble sample app,但請注意,某些JavaFX教程面向更有經驗的程序員。

+0

我實際上是用swt..but ur ryt開始的。我想我應該堅持擺動幾天。然後可能swt或Java FX或任何其他,雖然乍一看我發現SWT更容易。 –

1

AWT已經有效地被替換搖擺。

SWT是一個不同的框架,它提供了更大的本地交互與OS

JavaFX的是塊新的球員,而有些人認爲它爲Swing的替代品,它的主要目的是爲了顯示Flash或作爲它的替代品。

SwingX和JGoodies是基於Swing的庫。 Swing和SWT已經開始了相當長的一段時間,有些人可能會認爲它們是「舊的」,但它的意思是圍繞框架有一個知識體系,還有一些數字庫被設計用來支持並擴展它們

JavaFX是市場上的新玩家,尚未建立相同的知識和支持基礎。

如果我是你。我會關注Swing(親自),因爲它將爲您提供經驗豐富的開發人員和支持人員的最佳基礎,以幫助您順利完成任務。

一旦你變得更加舒適,你可以探索SWT,JavaFX和其他工具包和框架。

我會從Creating a GUI with Swing,Performing Custom Painting2D Graphics開始。

我個人的感覺是建立對基礎庫的理解,試着去學習它的優點和缺點。這將幫助你瞭解什麼時候使用這樣的庫,SwingX和JGoodies數據 - 恕我直言

+0

好吧..但隨着時間的推移,我不斷被告知使用擺動進行精確佈局確實是一項困難的工作,有些人甚至會說初學者無法處理這個問題。是這樣嗎 ? –

+0

恕我直言精確佈局超過額定值。沒有任何使用精確佈局的GUI框架可以在任何其他計算機上工作,除了它的創建方式。現代計算機擁有大量可能的字體,屏幕分辨率,方向和DPI(例如),試圖爲所有這些組合編寫精確佈局將是一種無時間的工作。 Swing的佈局管理器提供了一個高度靈活的API框架,不僅可以在運行相同操作系統但不同操作系統的計算機之間解決這些問題。看看HTML,它並沒有使用精確的佈局,例如 – MadProgrammer

+0

通過使用Microsoft的Foundation Framework,VB6,Delphi和Swing編碼,我可以告訴你,我更喜歡Swing的佈局管理器API,然後是我見過的任何其他解決方案,而且我實際上也看到了爲所有其他語言編寫的佈局管理器;) – MadProgrammer