clojure中的复杂GUI

时间:2011-02-04 20:14:13

标签: swing clojure

我今天刚刚开始使用clojure(但是,我已经使用了很多Java并且知道了功能范例)我想知道用一个合理的复杂界面构建一个clojure应用程序是否是一个好主意(拖放,删除,平移,缩放,...)使用Swing?

我可以想象很多正常的挥杆逻辑(特别是关于OO)必须以某种方式绕过......

我认为一切皆有可能,但是有可能以合理的方式进行吗?

我的意思是不是用螺丝刀而不是用锤子敲钉子?

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

谢谢!

3 个答案:

答案 0 :(得分:9)

我发现使用Swing在Clojure中构建合适的用户界面相对容易。但是,您有几个方法可以做到这一点:

  • 像在Java中一样编写代码,只需使用Clojure中的Java互操作来调用相关的Swing API。 This article很好地解释了如何使用一些宏观魔法来使你的生活更轻松。
  • 使用Clojure GUI包装器进行Swing,例如seesawclj-swing。我的看法是这些工具有可能帮助你在惯用的Clojure中编写一些非常简洁的GUI代码

答案 1 :(得分:6)

Clojure的software transactional memory子系统的一个非常酷的功能是它允许你在变量上设置监视:每当变量(通过任何东西)改变时,你的回调就会被执行。这有助于实现一种强大的GUI编程,GUI根据变量的状态自动更新。

http://www.paullegato.com/blog/swing-clojure-gui-black-scholes/详细介绍了一个简短但非平凡的Swing GUI示例。

答案 2 :(得分:1)

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

您是否考虑过Web UI,Clojure更适合自然?或 SWT QT Jambi ,也可以使用Clojure工作。