0

假设您有一组对象 X(例如,A、B、C、D),您希望将其划分为覆盖所有 X 的非空子集。从数学上讲,是集合的一个分区

因此,起初您可能会将它们视为完全不同的 {{A}、{B}、{C}、{D}}。或者,您可以将它们分成元音和辅音,即{{A}、{B,C,D}}。或者,任意地,{{A,D}, {B,C}}。

是否有支持此功能的标准用户界面小部件/概念/范式/模式?有两个带有 Add ->、Add All ->、<- Remove 和 <-- Remove All 的列表框在它们之间切换(即列表生成器)仅适用于 2 个子集,但不适用于任意 k 数的子集。

4

3 回答 3

3

我不知道可以完全按照您的要求执行的特定 UI 小部件,但这里有一些可能有用的 UI 范例(取决于您在定义子集后需要对它们执行的操作):

  • 颜色编码列表框 (允许用户或程序根据它们所属的子集以不同颜色突出显示项目。能够按颜色对项目进行分组并显示图例在此模型中很有用)。
  • 树控件(将组显示为树中节点的子节点。通常这将是只有两个级别的树 - 顶部是分区,下一个是分区中的项目。在分区(节点)之间拖动项目的能力并且能够重命名顶级分区在此模型中可能很有用。)
  • 分层网格 (类似于树形控件,但显示额外的信息列来描述正在显示的项目的详细信息)
  • 多列可拖动列表(一组可以拖动项目的多列。每列代表分区中的一个子集)。
于 2009-12-24T16:20:12.673 回答
1

将项目分组为集合的标准 UI 是单选按钮列表。可怕的 ASCII 近似:

A B C
o x o - Item One
o x o - Item Two
o o x - Item Three

这仅适用于少量集合,但可用于大量项目。大多数人会发现这很容易理解并且可以快速浏览。这是塔夫特所说的小倍数的一个例子。如果有人需要将大量物品从一组移动到另一组,这可能会很乏味。我敢打赌,可以通过允许在选择上按下单选按钮来减少这种情况。如果你这样做了,你肯定需要一个撤消功能。

一个经常使用的变体使用选项菜单而不是单选按钮组。

它可以像你想要的那样在视觉上很复杂——大多数 UI 工具包都支持单选按钮状态的自定义图像。这可能是对小倍数概念的更好使用,或者它可能退化为愤怒的水果沙拉。

我会犹豫使用移动项目的设计。拖放选择很乏味,您会遇到菲特定律的麻烦,而不仅仅是几组,而且您将失去独立于分组来组织列表的好处。

于 2009-12-29T00:32:40.957 回答
0

听起来像是拖放的工作。

一次来源,多个可能的目的地。也许是一个“添加子集”按钮,可以轻松创建新的子集。

同样的也可以通过一个列表中的“亮点”来实现。Ctrl-单击选择,单击颜色按钮。

于 2009-12-24T16:19:17.963 回答