簡體   English   中英

Scala/Groovy/Clojure 中的 GUI

[英]GUI in Scala/Groovy/Clojure

上次我不得不處理 Java 是在 2005 年,從那時起我幾乎忘記了它的一切。

今天我需要在 Java 之上構建一個 GUI 應用程序。 我想最好使用 Scala/Groovy/Clojure 語言之一。

問題是:它們中哪一個更適合桌面 GUI 編程? 我的程序將轉換並顯示一系列 jpeg/png 文件 + 將有大約 10 個對話框(每個對話框都有大量選項和所有可能的小部件)。

主要要求是緊湊:我討厭寫十幾行代碼只是為了用一個按鈕繪制一個簡單的框架。 我的 GUI 背景(主要是)Tcl/Tk 和 GTK+。

免責聲明:我是一名 Clojure 程序員。 我顯然有偏見。

在所有這些語言中,我認為 Clojure 和 Groovy 可能是最緊湊的。 Scala 是一種像 Java 一樣的大括號語言,因此它往往會占用更多空間。 然而,它遠沒有 Java 那樣冗長,而且我認為 Scala 非常棒。 我知道 Scala 有一個擺動包裝器。 我從來沒有在 Scala 中做過 GUI 開發,所以我真的說不出它的感覺。

我已經在 Clojure 中進行了一些搖擺開發,實際上並沒有花太多時間。 在您自己編寫一些抽象之前,直接從 Clojure 使用 Swing 可能會很乏味,但總的來說,swing 應用程序比 Java 中的同一件事要小,因為 Clojure 代碼往往比 Java 代碼更短、更簡潔。

Clojure 也有一些包裝器可以使 Swing 開發更加 Clojury。 其中之一是clj-swing 我已經看到一些使用它編寫的代碼,它非常酷,而且絕對比直接互操作更簡潔。

現在,我不知道 Groovy。 我真的對它一無所知,但我知道它比 Java 更緊湊,所以我想 GUI 開發也會相當緊湊。

我認為 Clojure 是一個安全的選擇。 與 Java 相比,使用 clj-swing,甚至直接使用 Java GUI 工具包將非常緊湊,並且使用宏在非緊湊內容上構建抽象的能力絕對是一個巨大的優勢。 Clojure 有我的投票權。

Scala 為基本 GUI 元素提供了相當完整的示例應用程序,您可以通過在命令行輸入scala scala.swing.test.UIDemo來運行這些示例應用程序。 您可以在 此處瀏覽它們的源代碼。

您還可以查看此文檔以了解 Scala 的 Swing 包裝器背后的設計原則。

Groovy 有Griffon框架,它使用約定優於配置在 JVM 上構建 GUI 應用程序。 它類似於 grails/rails,但用於豐富的 GUI 而不是 Web 應用程序。

Groovy 有一個叫做Swing builder 的東西,可以讓 GUI 編程更容易。 這是來自 groovy 網站的一段示例代碼,它創建一個帶有按鈕的框架並計算您單擊它的次數:

int count = 0
new SwingBuilder().edt {
  frame(title:'Frame', size:[300,300], show: true) {
    borderLayout()
    textlabel = label(text:"Click the button!", constraints: BL.NORTH)
    button(text:'Click Me',
         actionPerformed: {count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"},
         constraints:BL.SOUTH)
  }
}

我目前正在 Scala 中開發 SWT 應用程序並且非常喜歡它。 但我確實希望 Clojure 會更加緊湊。

我一直在通過直接使用 Clojure 和 Swing 來編寫 GUI。 到目前為止,它確實運作良好。 我還用 Java 編寫了一些自定義 UI 組件,事實證明這些組件很容易與代碼庫的 Clojure 部分集成。

我還認為clj-swing看起來很棒 - 如果您沒有 Swing 經驗,可能比直接使用 Swing 更容易。

暫無
暫無

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

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