设计GUI的顶级技巧是什么?

21

之前我读过一本很棒的书(在我丢失它之前),叫做《GUI失误》,这本书充满了糟糕的GUI设计例子,但也包含了很多有用的小贴士,比如不要一个时候称呼某个东西为对话框(Dialog),下一刻再称呼为弹出窗口(Popup)

你会给出哪些顶级提示供GUI设计/记录?特别是关于将可读信息塞入尽可能少的屏幕空间的控件。请注意,保留HTML标记,并使内容更加通俗易懂。

这里提供我的一个建议:避免使用树形结构(例如Swing的JTree),除非你真的无法避免或拥有无限级别的层次结构。我发现用户不觉得它们直观,而且难以导航和过滤。

PS。我认为这个问题与这个问题不同,因为我正在寻求通用的建议。


请参考之前的问题:程序员的用户界面设计书籍/资源 - Pontus Gagge
让常见情况成为默认选项(适用于API!) - BlueRaja - Danny Pflughoeft
10个回答

15

我个人遵循以下简单的规则:

  • 在整个应用程序中保持一致,不要改变行为/布局
  • 信息流:从上到下,从左到右(在西方国家)
  • 页面上不要有太多信息(像PPT演示文稿那样)
  • 使用大号字体(这样老年人也可以阅读)
  • KISS原则(任何会使用录像机的人都可以使用这个页面/表格等)
  • 使用放松的颜色,如蓝色、绿色等(而不是明亮的红色或霓虹粉色)
  • 结构(当然可以更改,但通常作为第一稿):
    • 顶部->导航/菜单
    • 左侧->导航/信息
    • 中间->内容
    • 底部->状态
    • 右下角->按钮

2
除非目标平台没有管理字体大小的系统设施,否则我会建议不要没有充分理由地使用“大字”。 - Steve S
我不太同意“页面上没有太多信息(比如ppt演示文稿)”:当你有大量数据要显示时(我想到了一个金融应用程序),什么才是最好的选择:一个大框架,带有许多子面板和大量数据,还是一堆小面板需要用户导航? - Guillaume
我认为这取决于用户习惯如何。就我所知,“金融人士”习惯于大量数字表格的纸质文件。因此,在GUI中复制这些表格可能是最好的选择。这也有一个好处,那就是“老年人”更容易接受新应用程序。 如果您只有5 (+/-2)个类别,则可以在不同的面板中显示它们。 正如我所说,这些事情取决于客户的愿望 - 如果他不确定:制作一个原型,向他展示应用程序的外观。 - Gambrinus

10

我曾经从一位技术领导那里得到了一条具体的建议:

当你在对话框/表单中使用按钮、文本框、列表等控件时,请尽量保持它们之间的空间一致且对称。例如,尝试在所有方向上都使用相同的控件间距离,如果一组控件与另一组控件之间由于增加了空白而被分隔开,请尝试使这个空白与组内部控件之间的距离相同。例如,如果一个部分中所有按钮的间距为16像素,则请尝试将下一组控件放置在32、64、128像素等较大的间距处。

这样做会让人眼觉得更舒适,更容易解析出绑定于明显对称性的事物。

自从我开始使用这种方法以来,总能得到非常好的结果。我甚至返回重新制作旧GUI,惊讶地发现只是通过这种调整就产生了如此明显的提升。

编辑:

忘记提到了从上述方法中学到的重要一课:

当你按照这种系统排列所有控件时(特别是在重新设计旧的混乱GUI时),你可能会发现自己的空间不够用了,你的对话框需要扩大。到某个时候,你可能会感觉这个对话框变得太大了(例如,遮挡了相关的背景GUI或相关控件之间的距离太远)。这可能是一个很好的提示,表明你可能应该将对话框拆分成选项卡,将一些内容移动到菜单中,或者将其转换为向导式概念等。

这与控件间距离毫不相关,但涉及用户在任何给定时间内进行互动时越少越好的主题。有趣的是,当你开始把事情做好时,“水波”会扩散并有时会迫使你做更多的正确事情(有点像修复const正确性:p)。


当然。小部件对齐是另一个(相关的)领域,在这里稍微付出一些努力就可以大有作为。这两个细节可以使应用程序看起来更加专业化,并且它们也有益于可用性。 - Steve S
这就是选择“正确”的LayoutManager的地方!当然,您不想使用硬编码的XYWH!一些LayoutManager将具有自动对齐,而其他一些则没有。 - jfpoilpret
另一个要点是组件之间的间距通常取决于平台(XP和MacOS上不同)。在Java 6中,有支持此功能和现代PLAF支持的方法。再次强调,您必须使用可以使用此信息的LayoutManager。 - jfpoilpret

7

我的首要建议是:从GUI开发人员的角度来看

保持简洁明了

如果你是从可用性角度来考虑的话

尽快向实际用户展示,并根据反馈进行改进


6

记住,用户的目标不是使用您的程序。他们的目标是其他事情,而您的程序只是帮助他们实现这个目标的工具。尽力让他们成功并感到满意。


1
作为开发者,很容易忘记这个! - mike

6
完成设计后:请让几个人坐在你的软件前,让他们尝试解决你的软件所设计的任务(一个接一个地,而不是同时...)。通过观察他们,你将会学到很多惊人的东西。如果可能的话,测试者应该符合你的典型客户群体的特征。你能找到越多这种可用性测试的人越好,但过去我曾经只观察了每个产品迭代的少数几个人,也非常有用。

4

不要更改默认颜色。这对于色盲的人非常重要。


3
为了解决你在JTree上遇到的问题(我也同意),如果你想要在应用程序中实现漂亮的JList和JTable交互,请考虑使用Glazed Lists: http://publicobject.com/glazedlists/。通过对你的代码进行一些调整,你可以获得很多功能(例如可排序的表头)。
除此之外,保持简单。

看起来,Glazed Lists 提供的许多功能现在已经在 JDK(自 1.6 版本以来)中通过 RowSorter 和 filter 类实现了。 - oxbow_lakes

2

我不确定我同意你的观点。有很多技巧可以帮助我们。对话框/弹出窗口建议让我看到了设计方面我之前没有想到的地方。越多的技巧越好。 - oxbow_lakes

1

尽可能少使用用户界面。

我认为我们忘记了计算机是信息“机器”,即它们的目的是为我们“工作”。

你有没有见过 iPhone 上的 Shazam?它几乎只有一个按钮。你按下它,把手机放在播放歌曲的扬声器旁边,大约 10 秒钟后它就会告诉你正在播放的歌曲。

非常有用,几乎没有用户界面。所有的艰苦工作都在底层进行。


0

一个下午?那可能不值80英镑! - oxbow_lakes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接