【问题标题】:How to design a good "progress panel"如何设计一个好的“进度面板”
【发布时间】:2008-12-10 12:40:02
【问题描述】:

对于需要几秒钟以上的任务,我认为一个好的用户界面应该提供一个进度条以及有关操作进度的适当信息。 (微软请提供User Interface Guidelines关于这个主题,但我想要一个更高级的状态面板。)

我使用的“任务”类能够记录消息,如果消息足够重要(警告或错误),我想在进度面板上显示它们。当出现警告或错误(可能是警告或错误图标)时,图形指示也会很好。如果有很多这样的消息,一个文本框、一个列表视图或者可能是一些report control 在这里可能是合适的。

任务运行时可以有一个取消按钮,任务完成后有一个“查看日志”按钮也不错。

总而言之,我对如何实现我的状态面板有一个很好的想法,但我真的很想对此提供一些意见。我错过了什么重要的事情吗?我在这方面做得太过分了吗?那里可能已经有类似的组件可用了吗?

【问题讨论】:

    标签: user-interface language-agnostic logging progress-bar


    【解决方案1】:

    对于日志记录,您可能实际上应该有另一个更高级别的错误。这些是我通常实施的关卡(从 80 年代的 DEC 开始)。

    1. DEBUG - 一个非常低优先级的消息,开发人员刚刚放入该消息以帮助诊断在出现问题时发生的情况。
    2. INFORMATIONAL - 没问题,只是报告用户可能感兴趣的进度。
    3. 警告 - 在某些情况下可能会出现问题,但也可能没问题。
    4. 错误 - 一个明确的问题。必须通知用户,但程序会尝试继续运行。
    5. 致命 - 问题严重到程序无法继续运行。

    第二个是,由于您将其称为“进度面板”,我假设您正计划实施某种进度条。实际上已经对progress bars 进行了相当多的研究。最重要的是,无论你做什么,都不要让进度条随着进度变慢。这使它似乎永远拖下去。

    最后,听起来您正在考虑某种状态消息行。如果您正在寻找一些好的状态消息,我建议您使用一些these。 :-)

    【讨论】:

      【解决方案2】:

      您在这里有一个similar Status Panel specifications,它可以为您提供一些关于可以包含在这种 GUI 中的内容的想法:

      在列出设计细节之前,请先定义此状态面板的目标和范围。

      注意:如果选项太多,您会将其演变为“控制面板”;-)

      【讨论】:

      • 这个规范是针对正在运行的服务,而不是针对单个任务,所以不是我要找的。我意识到“状态面板”这个词有点含糊,所以我改写我的问题,改用“进度状态面板”这个词。
      • 很公平。我更多地指的是指定(状态/控制/进度)面板的过程,而不是规范的实际内容。
      【解决方案3】:

      您需要在进行中查看日志消息,而不仅仅是在最后。如果出现错误,通常是在任务完成之前,UI 认为一切仍在进行中。发现这种情况真的很烦人,但唯一可见的日志消息(无需转到某个外部文件)是一些与实际问题相去甚远的随机信息消息。

      (我不知道你是否已经这样做了,因为你的问题并不清楚。如果你是,脱帽。)

      【讨论】:

      • 这正是我想要做的。如果日志消息足够“严重”(即错误或警告),则应该在进度面板中显示日志消息。
      【解决方案4】:

      我认为你的主进度条只填满一次是很重要的,并且总是有进度的指示。

      我最近在工作中做了一些非常相似的事情。任务很长,有很多子任务。我最终得到的界面是一个双进度条,实际上是一堆进度条中的第一个和最后一个。

      API 类似于

      StartNewTask(Caption,NumberOfSubtasks)
      EndTask 
      SetProgress(Caption,NumberOfSubtasksFinished)
      

      StartNewTask 将一个新柱压入堆栈,EndTask 弹出一个。

      SetProgress 设置最近推送的进度条的进度,并将更改波及父进度条。例如:

      StartNewTask('Doing 2 things',2)
       SetProgress('Done 1 now',1)
       StartNewTask('Big Subtask',40)
        ...
        SetProgress('Done some subtasks',10)
      

      现在,显示了 2 个进度条,第二个显示为 25% (10/40),第一个显示为 62.5% (1/2 + 10/40*2)

      就像我上面说的,如果堆栈中有 >2 个任务,我只显示第一个和最后一个(第一个给出整体进度,从不倒退,第二个给出当前活动的指示)

      您可以通过为每个子任务赋予权重来扩展此功能,即

      StartNewTask(Caption,[ListOfSubTaskWeightings])
      

      使顶部进度条更平滑。

      此外,开发人员可以显示所有进度条以查看为什么需要很长时间,而且我认为您可以从中制作出不错的日志。

      【讨论】:

        猜你喜欢
        • 2010-11-18
        • 2014-11-20
        • 2016-01-31
        • 2012-02-26
        • 1970-01-01
        • 2010-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多