2009-12-24 27 views
0

假設您有一組對象X(例如,A,B,C,D),您希望將其劃分爲涵蓋所有X的非空子集。數學上,一個partition of the set。所以,起初你可能會把它們當作所有不同的{{A},{B},{C},{D}}。或者,您可以將它們分爲元音和輔音,即{{A},{B,C,D}}。或者,任意{{A,D},{B,C}}。是否有標準的用戶界面範例用於配置一組元素的分區?

是否有標準的用戶界面小部件/概念/範式/模式支持這?有兩個列表框,分別是Add - >,Add All - >,< - 刪除和< - 全部刪除以在它們之間切換(即列表生成器)僅適用於2個子集,但不適用於任意k數字的子集。

回答

1

將項目分組爲組的標準UI是單選按鈕列表。可怕的ASCII逼近:

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

這隻適用於少數幾組,但可用於大量的項目。大多數人會發現這易於理解和快速掃描。這是Tufte稱之爲小倍數的一個例子。如果有人需要將大量物品從一套移到另一套,可能會很乏味。我敢打賭,可以通過允許選擇單選按鈕來減少這一點。如果你這樣做,你肯定會需要一個撤消功能。

這是一個常用的變體,它使用選項菜單而不是單選按鈕組。

它可以像你想要的那麼複雜 - 大多數UI工具包支持單選按鈕狀態的自定義圖像。這可能會更好地利用小的多重概念,或者它可能退化成憤怒的水果沙拉。

我會毫不猶豫地使用移動項目的設計。拖放選項非常單調乏味,Fitt定律不僅會造成一些麻煩,而且會失去獨立於分組而組織列表的好處。

+0

這是一個我以前沒有想過的有趣概念。然而,我感興趣的焦點是將其分組到少數名字不重要的集合中。類似項目是更重要的焦點。在你的例子中,如果第一項和第二項在A或B中,只要第三項在C中,則沒有區別。 對於這種情況,是否有改進的處理方法? – Brad 2009-12-29 03:31:29

+0

這些名稱對創建集合的人來說不重要嗎?我敢打賭,大多數人都會想到分區功能,然後將其應用到每個項目。組的名稱成爲成員資格規則。在你所有的例子中,你命名了這些集合,然後你對列表進行了分區。如果您重新分區列表,您只需重命名這些集合並再次通過列表。使用單獨的命令可以很容易地執行將相同組中的項目移動到彼此附近。按名稱穩定排序。 – 2009-12-29 13:36:08

+0

我只在一個例子中命名了元音:元音和輔音,只是爲了給出一個與第一個和第三個不同的例子。 我沒有命名集合,我命名了這些項目。在我的例子中,將A,B,C和D視爲項目一,項目二,項目三和項目四。 – Brad 2009-12-30 13:45:40

0

聽起來像一個工作拖動&下降。

一旦來源,多個可能的目的地。也許是一個'添加子集'按鈕,可以輕鬆創建新的子集。

也可以通過單個列表上的「高亮顯示」來實現同樣的效果。按住Ctrl鍵單擊選擇,單擊一個顏色按鈕。

3

我不知道具體的UI小部件完全按照你的要求進行,但這裏有幾個UI範例可能有用(取決於你在子集定義後需要做什麼):

  • 顏色編碼列表框中(允許用戶或程序來展示使用根據不同顏色的物品上哪些族羣,他們屬於to.Being能集團的項目由顏色和displying一個傳奇在這個模型中很有用)。
  • 樹形控件(在樹中顯示組作爲節點的子節點)通常,這將是一個只有兩個級別的樹 - 最上面的一個是分區,下一個是分區中的項目。在分區(節點)之間,並且能夠重命名最高級別的分區在此模型中可能很有用。)
  • 分層網格(類似於樹控件,但顯示額外的信息欄以描述正在顯示的項目的詳細信息)
  • 多列可拖動列表(您可以在其中拖動項目的一組多列。分區中的一個子集)。