用于处理基元和基元数组/集合的GUI库

时间:2012-05-04 07:01:14

标签: java swing

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

例如,如果是boolean,我经常使用JCombobox两个选项("true""false"),如果是int,我会使用JTextField。大部分工作都是来自文本......

一些示例映射:

  • intInteger => JTextFieldJSpinner
  • boolean => JTextFieldJComboBoxJCheckBox
  • int[] => JList(带“添加”字段和“删除”按钮)
  • Set<Byte> =&gt;可能与数组相同

所以,对于问题:

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

3 个答案:

答案 0 :(得分:2)

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

  1. glazed lists - 当您想要将Collection映射到jtable时(每行一个项目,列是对象的属性),此库绝对闪耀。
  2. jgoodies binding - 一个更通用的库,用于将bean属性映射到gui元素。它有点复杂,难以接受。
  3. 为什么是原始人?我假设您在一个或多个对象中存储您的模型(由gui显示/编辑的所有值的集合)?如果是这样,你可以依靠自动装箱并在gui中使用对象包装器。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

你可能会觉得有趣的是看一下基于Swing的Clojure的GUI库seesaw

它非常适合将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))