最优雅的项目分类用户界面?

2023-12-19

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

  • 颜色(红、银、蓝、黑等)
  • 车身形状(掀背车、轿车、轿跑车、旅行车等)
  • 座位(2、4、5、6 等)
  • etc.

您是否遇到过一种特别优雅的方法,可以让用户完全自由地定义自己的类别和值?

显然,任何设计都需要做出许多权衡。例如,可学习的设计可能效率不高,反之亦然。或者某些设计可能比其他设计对空间的要求更高。其中一些的开发时间比其他的要长得多。

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

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

我正在考虑的界面需要知道这类事情,因此用户定义的属性建议更符合我的想法。我只是渴望找到一个具体的例子来说明如何优雅地实现这种系统(在桌面应用程序中,如果这有影响的话)。

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


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

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

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

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

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

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

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

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

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

任务 2 的最终用户功能和灵活性是树状控件。树的根级别包括维度,层次结构中的下一步包括每个维度内的类别。主要优点是它支持尺寸依赖的关于类别。例如,可能有一个车辆类型维度,其中包括汽车、船、飞机等类别。对于汽车类别,可能有一个车身类型维度,其中的类别仅适用于该类别(轿跑车、掀背车等)。 )。从属维度在树中由类别的分支表示。结果是树在每个级别的维度和类别之间交替。

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最优雅的项目分类用户界面? 的相关文章

  • Java 和 GUI - 根据 MVC 模式,ActionListener 属于哪里?

    我目前正在编写一个模板 Java 应用程序 不知何故 如果我想完全遵循 MVC 模式 我不确定 ActionListener 属于哪里 该示例基于 Swing 但它不是关于框架 而是关于 Java 中 MVC 的基本概念 使用任何框架创建
  • 如何在不同的分辨率/屏幕上提供相同的应用程序

    Scenario 您需要在不同的屏幕上展示相同的应用程序 假设标准的 15 英寸 17 英寸 便携式 10 英寸和移动 4 英寸 可能在不同的分辨率下工作 Question 您是否尝试采用一种根据可用空间重新排列的流动布局 或者您是否滚动
  • 使用 Spring 进行 Swing GUI 开发

    是否有任何使用 Spring 最好是 v3 构建 Swing GUI 应用程序的不错的教程 这是可能的 但如果您想使用 GUI 构建器 则无法通过 spring 初始化任何 GUI 组合 所以你不能使用依赖注入之类的东西 Spring 管理
  • 用于基于 MFC 的 GUI 应用程序的免费自动化测试工具

    我是 Windows 开发和测试平台的新手 我正在开发一个基于 MFC 的 GUI 应用程序 并正在寻找有助于 UI 自动化测试的工具 我搜索时出现了一大堆工具 但大多数似乎都不支持MFC 我考虑的选项是 A 编码 UI UI 自动化 看起
  • 线程输出到 GUI 文本字段

    我试图在 GUI 的 TextField 中输出 但我得到的只是线程信息 这只是完整代码的一小部分 但完整版本也有同样的问题 完整版本有 5 个不同的线程同时运行 任何帮助或建议将不胜感激 public class O21 implemen
  • 来自另一个类的 Qt C++ GUI 调用

    我通过 gui 拖放创建了一个按钮和一个文本浏览器 UI 以及单击按钮功能是在 mainwindow cpp 中创建的 有一个 main cpp 但这是无关紧要的 因为在单击开始按钮之前程序不会启动 include mainwindow h
  • 如何在qt中创建正确的退出按钮

    我正在尝试创建一个退出按钮来正确关闭我在 QT 中制作的 GUI 我尝试通过以下方式执行此操作 include
  • 替换主窗口中的 CentralWidget

    我对 PySide 有点陌生 我有一个主窗口对象 一次显示一个小部件 我一直在尝试更改中央小部件QMainWindow类 以便在按下按钮时替换窗口中可见的小部件 问题是按下的按钮是在 Widget 类中 而不是在主窗口类中 say clas
  • 可感知的最短应用响应延迟是多少?

    用户操作和应用程序响应之间总是会发生延迟 众所周知 响应延迟越低 应用程序瞬间响应的感觉就越强烈 众所周知 高达 100 毫秒的延迟通常是无法察觉的 但是 110ms 的延迟又如何呢 可感知的最短应用响应延迟是多少 我对任何确凿的证据 一般
  • document.ready 之前的 Jquery UI 界面看起来很难看

    HTML 元素在 onload 或 document ready 被触发之前显示 所有 jQuery UI 小部件都在 document ready 上加载 这使得页面在最初几秒钟看起来很难看 处理它的可能选项 在使用 jQuery UI
  • 使android listview布局可滚动

    我有一个 xml 文件 其布局为 ASCII 形式 ImageView TextView List
  • 将下拉项定位在按钮 Flutter 下方

    我正在拼命寻找一种方法将项目放置在按钮下方 正如您所看到的 如果先前选择了第一项 则列表顶部与按钮处于同一级别 但是 如果我之前选择了最后一项 则下拉列表的位置使列表在按钮级别结束 这不是我想要的行为 我希望它始终位于第一个屏幕截图中 即使
  • JTable过滤后正确的行号

    这是一个 try 块 用于过滤 table job 以查找与关键字匹配的行 但是 当表模型发生变化时 我很难获得正确的行索引 它始终选择第一行 即使过滤结果显示的行不是第一行 我知道你可以做一些事情fireTableDataChanged
  • 为什么我无法在不手动编辑的情况下粘贴 Python REPL 的输出?

    大量的示例 Python 代码显示了 Python REPL 的输出 例如 gt gt gt class eg object def init self name self name name def hi self print Hi s
  • Kivy - 文本换行工作错误

    我正在尝试在 Kivy 1 8 0 应用程序中换行文本 当没有太多文字时 一切正常 但如果文本很长并且窗口不是很大 它只是剪切文本 这是示例代码 vbox BoxLayout orientation vertical size hint y
  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 如何在Netbeans中设置JList的ListModel?

    我在 Netbeans IDE 的帮助下设计了一个 Swing GUI 该 GUI 包含一个 JList 默认情况下 它使用 QAbstractListModel 将其作为 JList 构造函数中的参数传递以创建该 JList 我想在 Ne
  • 需要知道 jQuery UI Widget 是否已应用于 DOM 对象

    我正在使用 jQuery 并与 jQuery UI 进行一些交互 我需要在其中获取选项 然而 有可能 jQuery UI 功能尚未应用于 DOM 对象 当我访问选项时 我现在收到 JavaScript 错误 我有一个带有进度条的 DOM 对
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • 如何使用现代.fxml和controller.java在javafx 2.x中制作自动完成组合框[重复]

    这个问题在这里已经有答案了 如何使用现代 fxml 和controller java 在 javafx 2 x 中制作一个类似的自动完成组合框 就像制作这个一样 http blog ngopal com np 2011 07 04 auto

随机推荐

  • 如何更新“更新程序”? (C#)

    我有一个由两个程序组成的程序 Updater 和 WorkMaker 每当 WorkMaker 有更新时 更新程序都会终止它 下载更新 然后再次运行它 但假设我想出了新的更新程序 我该如何更新它 通过WorkMaker 通过第三个程序 谢谢
  • 如何获取行中的所有非空单元格数据 - Google Sheets 脚本编辑器

    我不确定这是否可能 而且说实话 我没有尝试很多事情 因为我不知道从哪里开始 顺便说一句 我正在使用 Google Sheets 中的脚本编辑器 我知道有 SpreadsheetApp getRange 和另一个来获取值或类似的东西 但我想要
  • 在 WPF RichTextBox 中将特定文本设置为粗体

    我正在扩展 WPF Richtextbox 的功能 我希望某些文本在输入时变为粗体 我能够将某些文本变为粗体 但粗体单词后面的文本也会变为粗体 这是我的代码示例 private bool Running false void CustomR
  • Polly 重试单元测试

    我正在使用 polly 来处理重试 参见下面的代码 如何对 polly 重试进行单元测试 使用 xunit 和最小起订量 services AddHttpClient GitHub client gt client BaseAddress
  • include、require 和相对路径

    我不知道为什么我总是遇到很多问题 无论如何 这是我想要的文件的路径 var www vhosts mysite com htdocs Classes DBConnection php 这是包含 require 语句的文件的路径 var ww
  • 替换来自 android webservice 的数据中的图像

    Hi all How can i replace the text or symbol from web service with local images in drawable folder 我从网络服务中获取符号和文本 我需要用保存在
  • 如何在Azure中搜索包含引号的文本(转义单引号)?

    我有一个关于 azure 搜索的查询 如下所示 results indexClient Documents Search
  • 在写入文件时从文件中读取数据

    我正在使用一个专有的 Java 库 它将其数据直接保存到java io File 但我需要能够读取数据 以便直接进行流式传输 数据是二进制的 一些媒体文件 The java io File作为参数传递给这个库 但我不知道如何从中获取流 除了
  • 每 15 秒读取一次文本文件的内容

    我正在一个音乐网站工作 我在服务器上有一个文本文件 其中包含当前播放歌曲的名称 我想每十五秒读取一次文本文件 并更改我网站上显示的文本 无需刷新 现在 使用一点 jQuery 和 javascript 我实际上已经达到了第一次读取并显示文件
  • Maven 依赖 - org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Properties 上的 NoSuchMethodError

    我正在跟进这篇博文 http www baeldung com the persistence layer with spring and jpa overview设置 Hibernate 持久层 我当前的 pom xml 如下所示
  • 在 bash 中的文件末尾添加新行字符

    如何使用 bash 命令行在名为的文件末尾添加新行字符file txt 我尝试使用echo但这是不对的 你能告诉我该怎么做吗 echo gt gt file txt 在末尾添加换行符
  • ASP.NET MVC 从 byte[] 生成 PDF

    在发布此消息之前 我看了很多帖子 但很少有人直接关闭说他们需要查看常见问题解答 很少有人给出使用 iTextSharp 或其他东西的解决方案 但没有一个能解决我的问题 我的问题是我有一个byte 并且我需要在新的子窗口中生成 PDF 我们只
  • 为什么以及如何重载运算符 << 进行打印

    我写了一个程序来实现堆栈 我里面有一个显示功能 我一开始是这样写显示函数的 template
  • QPushButton 更改同一布局中其他小部件的边距

    我有一个大布局 其中包含以下结构的小部件和布局 QVBoxLayout QTableView QPushButton 我将布局上的边距 填充和间距设置为 0 按照 Mac OS X 上的呈现方式 按钮不会填充其所有空间 相反 它周围有一些填
  • 带有不透明背景图像的引导内容

    我正在学习 Bootstrap 并试图找出一种用不透明背景图像显示内容的好方法 我目前正在使用 well 但不必这样做 我可以得到井 内部 且不透明的图像 但我无法得到其他内容 后面 的图像 这是 html 的一个小示例 backgroun
  • C# 将 PDF 文件附加到 MemoryStream - 无法访问关闭的流

    是否可以使用 iTextSharp 将现有 PDF 文件附加到动态创建的 PDF 中 我尝试按照下面的代码使用 PdfCopy 但我得到了Cannot access a closed Stream error 我见过将实际 PDF 文件合并
  • 添加 SQL 查询统计

    我正在尝试将记录从文本框更新到 Access 数据库中 我想知道每次点击保存时都会生成错误 System Data dll 中发生 System Data OleDb OleDbException 类型的未处理异常 附加信息 没有为一个或多
  • Redux 中的 Action 应该始终是唯一的吗?

    在此示例中 我使用名为的操作ADD TODO import createStore combineReducers from redux function todos state action state state switch acti
  • phpmyadmin 导出 html 而不是 sql

    我有 phpmyadmin 4 4 7 并且之前已将 MySql 表精细导出为 sql 格式 但是 即使我使用快速或高级方法选择 sql 格式 它现在仍以 html 格式导出 非常感谢任何想法 建议 谢谢 Lyle 当数据库非常大 在我的例
  • 最优雅的项目分类用户界面?

    我有一个项目集合 用户需要以多种方式对这些项目进行分组 分类 举个例子 假设它是汽车的集合 用户希望按以下方式对它们进行分类 颜色 红 银 蓝 黑等 车身形状 掀背车 轿车 轿跑车 旅行车等 座位 2 4 5 6 等 etc 您是否遇到过一