10

我已经构建了很多GUI:s,而且我不喜欢依赖库,所以我最终自己做了很多基础知识。我最终一遍又一遍地做的一件事是将原语映射到 GUI 组件。

例如,如果它是 aboolean我经常使用JCombobox两个选项("true", "false"),如果它是int我使用 a JTextField。大部分工作是从文本到文本......

一些示例映射:

  • intInteger=>JTextFieldJSpinner
  • boolean=> JTextFieldJComboBoxJCheckBox
  • int[]=> JList(带有“添加”字段和“删除”按钮)
  • Set<Byte>=> 可能和数组一样

所以,对于问题:

  • 是否已经有一个具有此类映射的库,或者我是否需要再次“发明”它?
  • 我已经看到使用反射和 SWT 作为前端的jfg(您可以使用 swing 实现一个新的前端,但这正是我想要避免的)。是否有使用摇摆和反射的模拟库?
4

3 回答 3

2

有 2 个绑定库我有一些经验:

  1. 釉面清单- 当您想要将集合映射到 jtable 时,这个库绝对会发光(每行一个项目,列是对象的属性)。
  2. jgoodies binding - 一个更通用的库,用于将 bean 属性映射到 gui 元素。它有点复杂且难以接受。

为什么是原语?我假设您将模型(由 gui 显示/编辑的所有值的集合)存储在一个或多个对象中,不是吗?如果是这样,您可以依靠自动装箱并在 gui 中使用对象包装器。

于 2012-05-06T10:18:34.317 回答
1

应该提到JavaFX,它仍然不是我的啤酒。

于 2012-05-06T10:28:36.263 回答
0

你可能会发现看看跷跷板很有趣,它是一个基于 Swing 的 Clojure 图形用户界面库。

它很好地将 Swing 功能包装在非常简单的函数中——即使您最终没有直接使用它,也有一些很好的设计理念。例如,它可以将控件直接绑定到可变数据对象:

; Bind a the value of a slider to an atom, with a transform
; that forces the value to [0, 1]
(let [s (slider :min 0 :max 1)
      a (atom 0.0)]
  (bind s (transform / 100.0) a))
于 2012-05-21T16:22:40.750 回答