Clojure:如何构建桌面UI
我正试图为原理图、布局和绘图设计一个桌面用户界面。只是从实际的软件设计师那里寻求高层次的建议 假设内存中有一个“数据库”(所有用户数据的任意深度clojure映射,可能还有另一个应用程序首选项的clojure映射,等等),我正在研究如何在这些数据库上执行模型-视图-控制器操作,其中数据可以由以下任意一个或多个对象渲染和修改:Clojure:如何构建桌面UI,clojure,model,javafx,cad,Clojure,Model,Javafx,Cad,我正试图为原理图、布局和绘图设计一个桌面用户界面。只是从实际的软件设计师那里寻求高层次的建议 假设内存中有一个“数据库”(所有用户数据的任意深度clojure映射,可能还有另一个应用程序首选项的clojure映射,等等),我正在研究如何在这些数据库上执行模型-视图-控制器操作,其中数据可以由以下任意一个或多个对象渲染和修改: 显示单个参数(如框宽)的独立文本字段 “检查器”类型的视图,显示选定对象的多个参数,如框宽、高度、颜色、复选框等 一种表/电子表格类型的视图,显示多个对象(可能是整个数据库
getValue
/setValue
世界打交道
我仍然假设至少有一些状态性/可变性,以及使用内置Clojure功能,例如在atom/var/ref上添加watch,并让运行时信号依赖函数
特定于平台的交互将紧密依赖于实际的UI,例如具体化ActionListener
s,处理ObservalEvalue
s等,并将尝试将实际应用程序数据对JavaFXProperty
等的依赖降至最低。我不想为此而生气
我不介意扩展JFX接口或制定自己的协议来使用特定于应用程序的defrecord
s,但我更希望应用程序数据保持为直接的Clojure数据,不受平台的污染
问题是如何建立这一切,最接近于不变的模型。我看到一些选择:
(deref…
垃圾。我相信这就是JFX想要做的,在叶子节点上有巨大的属性数组,等等,这让人感觉臃肿。使用这种方法似乎并不比用Java/C++编写代码好多少谢谢我不认为使用函数式语言来做GUI编辑器之类的工具是愚蠢的。但我不能声称对你的问题有答案。以下是一些可能对您的旅程有所帮助的链接:
当您将JavaFX作为GUI工具包时,研究(一个用于图形化编辑JavaFX场景的库框架)及其可能会对您有所帮助。它的一些功能与您描述的类似,但有所不同。它是红色的