user-interface - 用于分类项目的最优雅的用户界面?

标签 user-interface usability

我有一组用户需要以多种方式分组/分类的项目。举个例子,假设它是一个汽车的集合,用户希望通过以下方式对它们进行分类:

  • 颜色(红、银、蓝、黑等)
  • 车身造型(舱门、轿车、轿跑、旅行车等)
  • 座位(2、4、5、6 等)

  • 你有没有遇到过一种特别优雅的方式来让用户完全自由地定义他们自己的类别和值?

    显然,在任何设计中都会有许多权衡。例如,可学习的设计可能效率不高,反之亦然。或者某些设计可能比其他设计对房地产的要求更高。并且有些将比其他的需要更长的时间来开发。

    无论如何,如果你已经看到——或设计——一个很好的模式,我很想听听它。如果有截图就更好了。

    试图澄清 : 标签确实是一种很好的分类方式,但在我见过的所有实现中,只有一个级别的标签。用户通常无法定义类别/属性以及该类别中的项目值。要使用上面的示例和 StackOverflow 的标记,您需要将汽车标记为“蓝色”、“轿车”、“4”等。 StackOverflow 不知道一个项目不能同时标记为“轿车”和“轿跑车”。

    我想的界面需要知道那种东西,所以用户定义的属性建议更符合我的想法。我只是很想找到一个具体的例子来说明如何优雅地实现这种系统(在桌面应用程序中,如果这有所作为)。

    有没有更清楚的?如果没有,请发表评论,我会再次尝试澄清。 :)

    最佳答案

    听起来您有两个任务: 任务 1 对对象进行分类,对于一系列对象,用户在多个维度(属性)中的每一个上为每个对象分配一个类别(值)。任务 2:创建和修改维度和类别。

    在数据建模人员、面向对象的程序员和数据库设计人员之外,维度和类别的概念是一个很难掌握的概念。您应该为不了解类别和维度之间区别的用户做好准备。然而,用户通常会理解表格,其中每一列是一个维度(包括几个类别),每一行是一个对象。尽可能多地使用表格。

    第一个关键问题是通过用户研究弄清楚Task 1 和Task 2 是整合还是分离的程度。

    如果任务是集成的,用户经常不假思索地从一个任务流畅地切换到另一个任务,那么一种 UI 设计是有一个按维度排列的对象表,但提供一个空白列(或“插入”按钮)以允许用户添加维度。列标题具有用户可以编辑的维度名称。标题下方是一个空间,列出了该维度的类别。每个类别名称都是可编辑的,并且有一个空行(或“插入”按钮)用于添加新类别。下面是要分类的对象,每个对象在维度的每一列中都有一个下拉列表。

    在可用性测试中,注意用户试图通过单击类别列表中的类别而不是从下拉列表中选择来设置对象的类别。使类别列表在视觉上分开显示以防止出现这种情况。

    您可能需要一个按钮来隐藏/显示类别列表,因为这会占用大量空间(即使使用滚动条)。即使任务 1 和任务 2 紧密集成,我认为您会发现用户有时可能希望将类别列表排除在外。

    如果你发现任务 1 和任务 2 是分开的,很少一起完成(例如,用户通常设置他们的尺寸然后对一堆对象进行分类),那么你最好为每个任务使用单独的窗口(或页面),尽管在它们之间来回导航应该很容易。例如,虽然用户通常可能事先设置他们的维度然后很少修改它们,但有时用户会意识到在对一个不寻常的对象进行分类时需要一个新的维度类别,因此您提供了一个“添加类别”菜单项到“管理类别”窗口,为当前维度插入一个新类别,等待用户提供名称。

    任务 1 的窗口与之前相同:对象表,每个维度有一列下拉列表,但不包括类别列表、维度名称的编辑以及添加新维度的能力。如果用户需要扫描需要分类或重新分类的对象,或者如果用户通常需要将一个对象与其他对象进行比较(例如,决定如何对对象进行分类),则这是最有效的。然而,如果用户的任务真的仅限于根据外部信息一次对一个对象进行分类(例如,从纸上转录信息),那么考虑一个表格而不是表格,显示一系列列表框,每个列表框一个属性。只需单击每个列表框即可设置每个类别,这比使用下拉列表更快。

    任务 2 的窗口可能类似于任务 1 的标题部分。它与用于任务 1 的表格一致,并允许用户一次查看多个维度的类别,帮助他们找出最佳分类方案(例如,帮助他们找到本质上相同的类别出现在两个不同维度的位置)。然而,如果空间是一个问题,那么考虑一个维度列表,每个维度都显示一个主从关系中的类别列表。

    任务 2 的终极用户能力和灵活性是树状控件。树的根级别包括维度,层次结构中的下一步包括每个维度内的类别。主要优点是它支持依赖于类别的维度。例如,一个 Vehicle Type 维度可能包含 Car、Boat、Plane 等类别。对于 Car 类别,则可能有一个 Body Type 维度,其中包含仅适用于该类别的类别(Coupe、Hatchback 等)。 )。从属维度在树中由类别的分支表示。结果是树在每个级别的维度和类别之间交替。

    重要的是在视觉上区分类别和维度,可能通过不同的图标,也可能通过不同的字体——告诉用户层次结构中的交替步骤在性质上是不同的(例如,如果你创建了一个维度,那么你应该在至少两类)。即便如此,如果用户将维度与类别混淆(例如,允许他们将一堆“维度”移动到另一个维度下,将前者转换为类别),请提供一种轻松恢复的方法。

    我想再次强调人们对维度和类别等抽象的困难。即使他们确实理解它,人们通常也很难自己创建合适的维度和类别。有可能导致您需要仔细考虑的复杂交互(例如,当类别移动到新维度时,对象分类会发生什么?)。如果您希望每个用户真正创建自己的新颖维度,那么您可能需要认真重新考虑您的整个方法。这是一项本质上复杂的任务。

    如果在文化、组织或领域中已经有相关的多维方案(例如我们有汽车),那么用户会做得更好。当然,如果已经有方案,那么您可以研究它并将其作为默认尺寸集安装在您的产品中。任务 2 只需要支持,允许专家用户对其进行微调。

    关于user-interface - 用于分类项目的最优雅的用户界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/281300/

    相关文章:

    html - 鼠标悬停时文本字段输入焦点

    c# - 通过 URL 自动登录用户

    c++ - 可编辑 QComboBox : synchronize edit text with item text

    delphi - FireMonkey 并显示所有者表单的模式对话框中心

    javascript - 如果您的网站访问者禁用了 JavaScript,您会怎么做?

    windows - 拦截窗口试图窃取 Windows 的全局焦点

    c# - 将 GUI 值传递给 backgroundworker 的正确方法?

    c++ - 使用 C++ 开始 Windows GUI 应用程序开发

    java - 如何使用 gridbag 将 JFrame 的一半设为文本区域,另一半设为按钮?

    user-interface - 用户是否应该实时查看自己的性能统计数据