考虑您有一组对象X(例如,A,B,C,D),您希望将它们划分为覆盖所有X的非空子集。数学上,partition of the set。
因此,首先您可以将它们视为完全不同的{{A},{B},{C},{D}}。或者,您可以将它们分为元音和辅音,即{{A},{B,C,D}}。或者,任意地,{{A,D},{B,C}}。
是否有支持此功能的标准用户界面小部件/概念/范例/模式?有两个列表框添加 - >>,全部添加 - >,< - 删除,< - 全部删除以在它们之间切换(即列表生成器)仅适用于2个子集,但不适用于任意k个子集。
答案 0 :(得分:3)
我不知道具体的UI小部件是否完全符合您的要求,但这里有一些可能有用的UI范例(取决于您在定义子集后需要做什么):
答案 1 :(得分:1)
用于将项目分组到集合的标准UI是单选按钮列表。可怕的ASCII近似:
A B C
o x o - Item One
o x o - Item Two
o o x - Item Three
这仅适用于少量套装,但可以与大量物品一起使用。大多数人会发现这很容易理解并且快速扫描。这是Tufte所谓的小倍数的一个例子。如果有人需要将大量物品从一组移动到另一组,则可能会很乏味。我敢打赌,可以通过选择按下单选按钮来减少这种情况。如果你这样做,你肯定需要一个撤销功能。
常用的变体是使用选项菜单而不是单选按钮组。
它可以像您想要的那样视觉上复杂 - 大多数UI工具包支持单选按钮状态的自定义图像。这可能是更好地利用小型多重概念,或者它可能会变成愤怒的水果沙拉。
我会犹豫使用移动物品的设计。拖放选择是单调乏味的,你会遇到Fitt定律的问题而不仅仅是几套,你将失去组织列表而不受分组的好处。
答案 2 :(得分:0)
听起来像拖拉机的工作下降。
一旦来源,多个可能的目的地。也许是一个“添加子集”按钮,可以轻松创建新的子集。
同样也可以通过单个列表上的“突出显示”来实现。按住Ctrl键单击选择,单击颜色按钮。