簡體   English   中英

構建Java Swing GUI的最佳方法是什么?

[英]Best way to build Java Swing GUI?

直到現在,我一直在使用Netbeans Swing GUI生成功能為我的java應用程序構建GUI。

現在我已經開始在我的項目中使用Eclipse並且已經刪除了Netbeans。 因此,除了手動編寫GUI的所有代碼之外,還有哪些方法可以快速以更好的方式構建GUI。

自從過去兩年以來,我一直在為eclipse IDE使用Visual EditorWindows Builder插件。 我發現Windows Builder非常完美! 它為您提供非常干凈和高度可讀的代碼。 所以我更喜歡使用Windows Builder,這樣你就可以做任何你在微軟Visual Studio中找到的所有功能“ 拖放和所有 ”。

您可以手動編碼,但使用GroovyBuilders( 鏈接 )比使用普通的java快得多,但您需要在應用程序中嵌入Groovy lib。

否則就存在一個名為MIG Layout的布局管理器,它運行得很好(比普通的gui構建更實用)..

我還使用了一個名為JVider的工具來構建一些簡單的應用程序,但是使用可視化方法你會得到同樣令人討厭的事情:保持接口和后端同步,同時考慮視覺對象和變量名稱之間的“綁定”。

我遇到了類似的情況,但發現NetBeans實際上有一個漂亮的“導入eclipse項目”功能。 因此,我最終在NetBeans中進行可視化GUI設計工作,但使用Eclipse進行編碼,調試和分析。 Netbeans為您的項目添加了一些文件,您可能想要在NetBeans中調整自動代碼生成模板,但這是一個適合我的解決方案。 當然,Eclipse還附帶了自己的可視GUI構建器,但我更喜歡NetBeans用於可視化GUI設計和開發。

在NetBeans中導入Eclipse項目。

Eclipse Visual Editor項目

Luhar提到的Eclipse Visual Editor項目相當不錯,它可以使用任何bean樣式的swing或awt組件,並支持編輯已存在的類,因為它依賴於反射而不是單獨的元數據。
此外,對於如何操作生成的代碼沒有限制,因為VEP將在修改源文件時盡力保留它。
如果你想將它用於更復雜的組件,我會推薦一個相當高端的系統,因為它非常耗費資源。
關於VEP的好消息:

  • 支持Swing / AWT / SWT
  • 使用源代碼和反射不需要額外的數據
  • 可以與現有組件一起使用(見上文)
  • 可以直接編輯代碼或在預覽窗口中編輯
  • 生成干凈的代碼,而不會破壞現有代碼

不太好的事情:

  • 慢,不要忘記在直接編輯源代碼時暫停預覽功能,它會嘗試幾乎不斷刷新。
  • 在代碼中出現編譯錯誤時,請勿使用“預覽”窗口,對預覽所做的任何更改都可能導致源中的編輯混亂。 在再次使用之前,您必須清除任何編譯錯誤。

您也可以考慮使用嵌入Clojure的 Seesaw

你的GUI代碼看起來像是這樣的:

(defn -main [& args]
  (invoke-later
    (-> (frame :title "Hello",
               :content "Hi there",
               :on-close :exit)
        pack!
        show!)))

其中“Hi there”會自動“轉換”為JLabel,但您可以將任何Swing組件放入:content

這個來自我的seesaw-buttons示例項目的更復雜的例子:

(ns seesaw-buttons.core
  (:use seesaw.core))

(defn -main [& args]
  (invoke-later
    (let [open-action (action
                    :handler (fn [e] (alert "I should open a new something."))
                    :name "Open ..."
                    :key  "menu O"
                    :tip  "Open a new something something.")
      exit-action (action
                    :handler (fn [e] (.dispose (to-frame e)))
                    :name "Exit"
                    :tip  "Close this window")]
      (-> (frame :title "Hello",
                 :content (border-panel
                            :north (toolbar :items [open-action exit-action])
                            :center "More content here..."),
                 :on-close :exit)
          pack!
          show!))))

Seesaw和Clojure的優點是消除了許多樣板代碼,Seesaw增加了一些加速開發的功能和約定。

我所做的經驗是,如果您希望能夠一起單擊您的應用程序,Netbeans就像構建Swing GUI一樣好。 然而,就像你一樣,我喜歡在eclipse中編寫比Netbeans更多的編碼(個人偏好,Netbeans仍然是偉大的編輯器imo)。 有一段時間我最終在Netbeans中創建了我的GUI,然后只是將項目導入到eclipse中。

這樣做沒問題,但最后我想你會得出我所做的相同結論,最好是學習布局管理器並手工編寫GUI。 也許看看JGoodies提供的那些,如果Sun提供的那些不是為你做的。

另一種方法是使用一些XML庫,如SwixML 要使用它需要一些代碼更改,但很好地將UI與代碼分開。 另一方面,它只是擺動類的包裝。 這是恕我直言,無論是優勢還是劣勢。 它也是一個非常好的快速原型庫,因為你可以(通常)嘗試對話,直到它足夠。

暫無
暫無

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

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