簡體   English   中英

自定義 Java Swing GUI 與 Netbeans 拖放編輯器

[英]Custom Java Swing GUI vs. Netbeans Drag n' Drop Editor

與使用 Netbeans Drag n Drop 編輯器相比,手動編寫 Java Swing GUI 有什么優勢嗎? 也許例如運行時? 在我看來,編輯器會自動創建相當多的額外代碼,但我不知道這是否對加載視圖的運行時有太大影響。 我目前使用編輯器的唯一原因是它使 GUI 構建變得快速而簡單。 但是,是否有一些事情您只能通過手動編碼而無法通過編輯器完成?

還有更好的GUI框架嗎? 我已經看過 Java FX,但我真的很想要 Github 桌面軟件所具有的那種效果。 它看起來非常光滑和干凈,幾乎就像一個 web 應用程序。 盡管我確信他們是用 C++ 做到的。 在我看來,Java 在圖形方面並不多見。 我的一位朋友評論說,所有的 Java 程序看起來都一樣,而且到目前為止似乎是正確的。

我知道有類似的帖子,但坦率地說,它們不是最近的,例如以編程方式編寫 gui,或使用高級 gui 編輯器 (Java Swing)? 發布於 2010 年或Learning Java Swing (GUI builder or not?)也是在 2010 年發布的。如果沒有新內容,很抱歉打擾您。

與使用Netbeans Drag n Drop編輯器相比,手動編碼Java Swing GUI有什么優勢?

有很多,但讓我們從顯而易見的...

  • 不會將您鎖定在單個開發環境中。 這意味着您的代碼可以共享給其他可能不使用Netbeans的人。 當您使用諸如基於Maven的項目之類的東西時,這尤其重要
  • 鼓勵您學習API。 您對API的實際工作方式有很好的了解,並學習了許多使流利而靈活的接口的技巧。
  • 鼓勵更大程度地分離責任。 只需簡單地將組件拖動到表單上就很容易了,這對於封裝或管理沒有任何作用。 通過將UI划分為職責區域,可以更輕松地管理組件之間不同的狀態和關系。 這也使代碼通常更易於閱讀,因為您無需繼續丟棄與您要找出的內容無關的內容。
  • 更好的可擴展性。 在大多數情況下,擴展組件並不容易,但是使用基於表單的組件幾乎不可能(或者至少要困難一個數量級)。
  • Netbeans表單編輯器代碼是...一團糟...

別誤會,我使用表單編輯器,但是在選擇表單編輯器之前,我已經手工編寫了Swing GUI十年。 我喜歡用於布置最終屏幕的表單編輯器,並且傾向於在此之前的每一步都使用手工編碼的UI,可以將釘子插入孔中。

簡短的答案是-恕我直言,除非您可以手工制作多級GUI,否則請遠離表單設計者。

我知道有人認為他們是很好的學習工具,反之亦然,我認為他們可以讓您養成懶惰和不良的習慣,這些習慣會影響您將來的工作。

盡管開發環境不應該有所作為,但並不是每個人都希望使用Netbeans,最好學習一下

還有更好的GUI框架嗎?

那只是個見解。 Swing通過使用外觀體系結構引入了蒙皮的概念,它使您能夠更改組件外觀的感覺。

JavaFX通過使用CSS提供了類似的功能

Swing也是高度可定制的,很容易進入組件的“繪畫”級別,甚至可以根據需要生成自己的組件。

制作“光滑” UI的能力與工具包無關,而取決於開發人員。 只需將字段和其他組件拖放到容器上很容易,但是開發人員需要對底層API有充分的了解,並需要一些天才才能使它看起來“漂亮”。

漂亮並不總是等於功能。 最好的UI是您不必考慮的東西,不會妨礙您的工作而已。 當您使用某個程序長達數小時,數天,數周的時間時,您將不會關注UI的外觀,而是可以讓您輕松完成所需的工作-IMHO

手工編碼完成的GUI Builder無法完成的第一件事是:動態更改接口。

例如:

如果要構建涉及多個JTextField的表單,但是不確定在構建GUI時將有多少個表單。 該程序將需要動態填充JTextField 對於GUI Builder,這是不可能的。

另外,當您具有復雜的接口時, GroupLayout的大小調整行為可能會很麻煩且令人困惑。 另一方面,在編寫復雜的界面時,手工編碼的布局需要大量工作(但是,至少它們的調整大小行為是可以預測的)。

應該使用經典的 GUI 構建器來制作 GUI 原型。 一旦你確切地知道你想要什么,你應該擺脫它並清理代碼(分解它,記錄它,...簡而言之,讓它簡單易讀)。

我的一位朋友評論說,所有的 Java 程序看起來都一樣,而且到目前為止似乎是正確的。

並非絕對正確:JavaFX 外觀可通過 css 進行自定義。 Swing 還可以通過 LAF 系統或通過覆蓋paint* 方法完全自定義(我承認更耗時)。

如果你尋找一些簡單的東西而沒有生成代碼的缺點,我建議你看看ReflectionUI :easy外觀定制(這不是唯一的好處): 在此處輸入圖片說明 .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM