2011-07-19 68 views
0

在接下來的幾周/幾個月裏,我將開始使用Java的第一個嚴肅的GUI。這將是我在Java中的第一個項目,我將堅持自己的編碼實踐和結果的高標準,所以我期望學習過程需要一些時間。Java GUI - 加速學習曲線

我想說,我不是一個初學Java的人,但更多的是一箇中間用戶 - 習慣API,仍然在一些關鍵字上很尷尬。我非常喜歡OOP,主要是通過PHP開發。

有沒有人們能想到的任何提示來幫助加快學習速度,即「不要那樣做」或「我希望有人告訴我這種類型的東西」。

我在其他一些問題中遇到的第一個問題是一個空佈局管理器 - 顯然,這是嚴重的編程問題,並導致故障排除。所以,這可以立即幫助我,可能會在那裏保存一週並重寫一些內容。

另一個是使用NetBeans在Swing中移動...但我無法詳細說明那個,但需要一些研究。

有沒有其他強大的建議呢?

回答

3

你可能想看看以下內容:

的JGoodies有著名的FormLayout和其他的東西:http://www.jgoodies.com/

SAF JSR-296實現叉:http://kenai.com/projects/bsaf/pages/Home

Apache的風景,尤其是郎,如果你不使用這些,你在錯誤的軌道上:http://commons.apache.org/

不知道關於SwingX現在,但它似乎也值得一看:Does anyone use the "swingx" extensions to Swing?

Java的做法,一般的好東西:http://www.javapractices.com

你絕對應該考慮使用現有的框架和工具。它有助於預先閱讀很多內容以獲得圖片,而不是深入研究自己。除桌面應用程序中常見的翻譯庫外,幾乎所有東西都存在,例如用於常見操作(菜單項)。

編輯:啊,不要忘了...的SwingWorker

+0

優秀的@Kawu,喜歡它:「如果你不使用這些,你就錯了。」哈哈。謝謝,可能會接受,但我會給它一天左右,看看還有什麼可以擺脫。 – Ben

+0

哦,不要期望Swing的佈局經理太多,他們知道不提供你需要的複雜佈局。因此,您應該尋找自定義佈局管理器,我認爲這些管理器存在於SwingX中。您也可能想要在它們的類中爲GUI元素添加前綴,爲JPanel添加pn,爲JTextField添加tf等。如果您不想這樣做,您最終會後綴所有內容,例如loginPanel而不是pnLogin,這沒什麼更好的。請注意,這不是匈牙利符號,只是一個簡單的前綴方案,它允許快速更改GUI元素類,而不必提供新的var名稱 – Kawu

+0

我已經看到前綴(偶爾postfixing)在這裏和那裏彈出,這是一個偉大的解釋爲什麼它很有用。 – Ben

3

如果您使用的是Eclipse,您可以嘗試WindowBuilder Pro,這是一個現在是開源的GUI設計器,也是Eclipse項目的一部分。它生成的代碼非常易讀。老實說,使用這個工具,我不會再用手工進行UI開發。它包括Swing和SWT等等。還支持許多強大的佈局管理器(包括MigLayout!)。

enter image description here

+0

我和我會,歡呼。 – Ben

1

鞦韆只是一個GUI API(以及任何GUI編程如MVC將適用相關和主題很好地覆蓋在CS文獻)。

只要注意以下幾點需要注意(這實際上適用於大多數GUI系統,在那裏,因爲它巨大的簡化了編寫此類庫的任務):

這是一個「積極的子系統」,有它自己的專用線程。深入瞭解Swing的線程問題,如何使用SwingWorker等。

就工具而言,最後我檢查了一下,NetBeans是Swing land中的山丘之王(但那是前ora)。如果您不喜歡該工具,那麼請爲自己做個忙,至少創建一個示例應用程序並觀察IDE如何爲您組織應用程序。那裏有一船集體知識。

+0

偉大的建議,謝謝!我聽說過單線程擺動的垮臺,但我還沒有研究這個問題。我會鑽研! – Ben

4

是否還有其他強大的建議呢?

同樣在佈局的一般主題上,當嵌套佈局的組合會達到效果時,不要花時間試圖找到「正確的」佈局。有關示例代碼,請參見Nested Layout Example

+0

這可能是另外幾天救了,歡呼! – Ben

+0

關於不同面板的專門佈局的好處是它們在GUI設計器中有更好的支持。 GUI設計器中的MigLayout之類的東西只允許您將約束條件編輯爲字符串,因爲它太泛化(並且會告訴您如果輸入無效的內容就編輯源文件!)。不很用戶友好。 –

1

我喜歡的GridBagLayout了很多。如果您擁有Java 6,流和框佈局也很好理解和分組佈局。NetBeans IDE有一個非常直觀的GUI管理器,但它編碼的方式有點奇怪。當然,空佈局具有最大的靈活性,但並不像您所說的那麼好,除了這些佈局之外,我懷疑除了極少數情況外您還需要其他功能。

+0

非常好,很高興聽到關於零布局的確認... – Ben

2

另一種是使用NetBeans走動在Swing ...

我不使用IDE生成,因爲好了,現在你綁在IDE的粉絲,你可以」 t從IDE轉移到IDE。你不得不遵循他們生成的代碼的結構。我喜歡完全控制代碼。

+0

我對你很合適 - 我更喜歡自己生成它。然而,我似乎還記得那條建議提到這個人比從頭開始使用Swing學得快得多...... – Ben

+0

@camickr amen +1 – mKorbel

+0

請注意,如果您不使用內置驅動程序,在'GUI設計器'(並觀看其他一些事情)。 (也許這對你的評論中的某些人來說是顯而易見的,我只是覺得這是值得澄清的。)我與一個使用Ant構建項目的富客戶端的團隊合作。我們可以自由使用任何我們喜歡的IDE(並且不會讓公司花費)。大約一半的開發人員使用Eclipse,而另一半使用Netbeans。沒遇到任何問題。 –