User interface 如何设计一个好的;进度小组;
对于需要几秒钟以上的任务,在我看来,一个好的用户界面应该提供一个进度条以及有关操作进度的适当信息。(微软很乐意提供这个主题,但我想要一个更高级的状态面板。) 我使用的“task”类能够记录消息,如果消息足够重要(警告或错误),我希望在进度面板上显示它们。当出现警告或错误时,最好有一个图形指示(可能是一个警告或错误图标)。如果有很多这样的消息,一个文本框,一个列表视图或者一些可能适合这里 在任务运行时可能会有一个“取消”按钮,在任务完成后,也可以使用“查看日志”按钮 总而言之,我对如何实现我的状态面板有一个很好的想法,但我真的希望在这方面有一些投入。我错过什么重要的事了吗?我是不是太过火了?可能已经有类似的组件可用了吗?这里有一个可以让您对这种GUI中包含的内容有一些想法: 在排序中,在列出设计详细信息之前定义此状态面板的目标和范围User interface 如何设计一个好的;进度小组;,user-interface,language-agnostic,logging,progress-bar,User Interface,Language Agnostic,Logging,Progress Bar,对于需要几秒钟以上的任务,在我看来,一个好的用户界面应该提供一个进度条以及有关操作进度的适当信息。(微软很乐意提供这个主题,但我想要一个更高级的状态面板。) 我使用的“task”类能够记录消息,如果消息足够重要(警告或错误),我希望在进度面板上显示它们。当出现警告或错误时,最好有一个图形指示(可能是一个警告或错误图标)。如果有很多这样的消息,一个文本框,一个列表视图或者一些可能适合这里 在任务运行时可能会有一个“取消”按钮,在任务完成后,也可以使用“查看日志”按钮 总而言之,我对如何实现我的状态
注意:有太多的选项,你会把它变成一个“控制面板”;-) 对于日志记录,实际上可能会有另一个更高级别的错误。这些是我通常执行的级别(从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])
使顶部进度条更平滑
此外,开发人员可以显示所有进度条,以了解为什么需要花费很长的时间,我认为您可以从中获得良好的日志记录。此规范适用于正在运行的服务,而不是单个任务,因此不完全是我要找的。我意识到“状态面板”一词有点模棱两可,所以我将我的问题改为使用“进度状态面板”一词。这很公平。我指的是指定(状态/控制/进度)面板的过程,而不是规范的实际内容。这正是我试图做的。如果日志消息“严重”(即错误或警告),则应在进度面板中显示日志消息。