Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 如何设计一个好的;进度小组;_User Interface_Language Agnostic_Logging_Progress Bar - Fatal编程技术网

User interface 如何设计一个好的;进度小组;

User interface 如何设计一个好的;进度小组;,user-interface,language-agnostic,logging,progress-bar,User Interface,Language Agnostic,Logging,Progress Bar,对于需要几秒钟以上的任务,在我看来,一个好的用户界面应该提供一个进度条以及有关操作进度的适当信息。(微软很乐意提供这个主题,但我想要一个更高级的状态面板。) 我使用的“task”类能够记录消息,如果消息足够重要(警告或错误),我希望在进度面板上显示它们。当出现警告或错误时,最好有一个图形指示(可能是一个警告或错误图标)。如果有很多这样的消息,一个文本框,一个列表视图或者一些可能适合这里 在任务运行时可能会有一个“取消”按钮,在任务完成后,也可以使用“查看日志”按钮 总而言之,我对如何实现我的状态

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

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

在任务运行时可能会有一个“取消”按钮,在任务完成后,也可以使用“查看日志”按钮

总而言之,我对如何实现我的状态面板有一个很好的想法,但我真的希望在这方面有一些投入。我错过什么重要的事了吗?我是不是太过火了?可能已经有类似的组件可用了吗?

这里有一个可以让您对这种GUI中包含的内容有一些想法:

在排序中,在列出设计详细信息之前定义此状态面板的目标和范围


注意:有太多的选项,你会把它变成一个“控制面板”;-)

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

  • 调试-一个非常低优先级的消息,开发人员只需输入它来帮助诊断发生错误时的情况
  • 信息-没问题,只是报告用户可能感兴趣的进度
  • 警告-在某些情况下可能是一个问题,但也可能很好
  • 错误-一个明确的问题。必须通知用户,但程序将继续运行
  • 致命-严重到程序无法继续运行的问题
  • 第二个问题是,既然您称之为“进度面板”,我假设您计划实现某种进度条。事实上,已经有相当一部分人对这一问题进行了研究。最重要的是,无论你做什么,都不要让酒吧的进度变慢。这使它似乎永远拖下去


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

    您将希望在进行中查看日志消息,而不仅仅是在结束时。如果一个bug发生了,它通常会在任务完成之前出现,用户界面认为一切都还在进行中。发现这种情况可能真的很烦人,但唯一可见的日志消息(不去任何外部文件)是一些与实际问题相去甚远的随机信息消息


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

    我认为重要的是,你的主进度条必须准确填写一次,并且始终有进度指示

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

    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)
    
    现在,显示了两个进度条,第二个进度条为25%(10/40),第一个进度条为62.5%(1/2+10/40*2)

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

    您可以通过给每个子任务赋予权重来扩展它,即

    StartNewTask(Caption,[ListOfSubTaskWeightings])
    
    使顶部进度条更平滑


    此外,开发人员可以显示所有进度条,以了解为什么需要花费很长的时间,我认为您可以从中获得良好的日志记录。

    此规范适用于正在运行的服务,而不是单个任务,因此不完全是我要找的。我意识到“状态面板”一词有点模棱两可,所以我将我的问题改为使用“进度状态面板”一词。这很公平。我指的是指定(状态/控制/进度)面板的过程,而不是规范的实际内容。这正是我试图做的。如果日志消息“严重”(即错误或警告),则应在进度面板中显示日志消息。