Swing clojure中的复杂GUI

Swing clojure中的复杂GUI,swing,clojure,Swing,Clojure,我今天刚开始使用clojure(不过,我已经使用了很多Java,并且知道函数范例),我想知道使用Swing构建一个具有合理复杂界面(拖放、平移、缩放等)的clojure应用程序是否是一个好主意 我可以想象,许多正常的swing逻辑(特别是关于OO的逻辑)必须以这种或那种方式被绕过 我想这一切都是可能的,但这是可能的吗 我是说,这不是像用螺丝刀而不是锤子敲钉子一样吗 这里有没有人有使用Clojure构建GUI的经验(当然还有:Swing是理想的人选吗?) 谢谢 我发现在Clojure中使用Swin

我今天刚开始使用clojure(不过,我已经使用了很多Java,并且知道函数范例),我想知道使用Swing构建一个具有合理复杂界面(拖放、平移、缩放等)的clojure应用程序是否是一个好主意

我可以想象,许多正常的swing逻辑(特别是关于OO的逻辑)必须以这种或那种方式被绕过

我想这一切都是可能的,但这是可能的吗

我是说,这不是像用螺丝刀而不是锤子敲钉子一样吗

这里有没有人有使用Clojure构建GUI的经验(当然还有:Swing是理想的人选吗?)


谢谢

我发现在Clojure中使用Swing构建体面的用户界面相对容易。但是,关于如何操作,您有两个选择:

  • 编写代码的方式与在Java中编写代码的方式非常相似,只需使用Clojure提供的Java互操作来调用相关的Swing API。很好地解释了如何通过一些宏观魔术让你的生活更轻松
  • 对Swing使用Clojure GUI包装,例如,或。我的看法是,这些工具有可能帮助您用惯用的Clojure编写一些非常简洁的GUI代码

Clojure子系统的一个非常酷的特性是,它允许您对变量设置监视:每当变量发生更改(通过任何方式),您的回调都会执行。这有助于实现一种功能强大的GUI编程,其中GUI会根据变量的状态自动更新自身


在中详细描述了一个简短但不平凡的Swing GUI示例

由于其他人提到了与swing相关的答案,我将问您一个问题:swing是一项要求吗。尽管在clojure中编写Swing代码比在Java中更令人愉快,但它仍然是Swing,有着所有的冗长和麻烦,特别是在具有硬设置需求的复杂应用程序中


你有没有考虑过web UI,Clojure更适合自然的应用?或者SWT或者QT-Jambi,也可以使用Clojure进行操作。

谢谢,我看到这是可以做到的,但是增加的复杂性(我可以在Java/swing中处理)会不会成为以后构建应用程序的障碍?难道没有可以忽略的东西吗?在Swing中,我曾经构建自己的MVC(其中datachange触发了GUI):我想这仍然是可能的?同样,给出的示例很好,也很有用,但仍然非常简单……在Swing/Java中,没有任何东西是Clojure无法做到的——如果需要,最终可以通过Java互操作调用任何Swing/Java函数。当然,随着应用程序的增长,您需要管理复杂性,但我认为在Clojure中这实际上比Java/Swing更容易(因为有更高阶的函数、最小的样板文件、宏等)。您可能还想看看我为方便GUI编程而编写的库:。它允许您将程序的状态封装为单个原子中的不可变数据结构。我提供了三个例子来说明它是如何工作的。+ 1:没有摆动是不需要的,这就是为什么我说:(当然,这是摇摆的理想人选?)当然,我有一些经验的摆动,我认为这是一个优势。