0

我的应用程序是上下文敏感的,我为主窗口/上下文/弹出窗口和其他地方动态构建菜单。我通常知道给定的菜单命令在应用程序的当前状态下是否有效。禁用/灰色当前不适用的菜单选项是更好的做法,还是因为无论如何我都在生成菜单,所以完全忽略它们?

该应用程序是 Java/Swing,任何人都很好奇。这个问题似乎与 GUI 工具包无关,但可能与平台有关。

4

2 回答 2

1

旧的苹果指南说禁用固定菜单(在菜单栏中),并省略上下文菜单。

我猜动机是上下文菜单应该只显示特定上下文可用的选项,而主菜单应该显示所有命令,所以即使“保存”在哪里不可选择,用户也知道它在哪里此时此刻。

于 2009-09-23T18:00:10.530 回答
0

对于右键单击菜单,我会说如果该项目适用于右键单击但由于某些其他外部原因不可用,请禁用它。如果它不适用于右键单击的事物,则将其隐藏,因为它永远不会出现。一个例子:

当我在 Firefox 中右键单击此页面的背景区域时,前四个项目是 Back、Forward、Reload 和 Stop。Forward 和 Stop 被禁用,因为它们现在不是有效的操作(我没有转发历史记录并且页面不再加载)。这四个家伙非常一致地提供,他们是预期的,全球性的,经常使用的命令。它们是四个主要的“导航”控件,默认情况下它们具有工具栏对应项(以大专用按钮的形式)。

但是,如果我右键单击图像,我会在上下文菜单中获得完全不同的选项,所有这些选项都与在我单击的位置查看、保存和复制图像有关。这些选项在正常使用下根本不会出现(甚至没有被禁用),因为它们非常特定于我右键单击的内容。右键单击背景区域时,停止和前进虽然当前不是有效操作,但仍然适用于我单击的内容(页面),但由于其他原因它们不可用...

就像顶部菜单栏上的菜单规则一样,目标不是让用户因为从用户的角度来看莫名其妙的原因突然出现的命令感到惊讶。

于 2009-09-23T18:12:28.540 回答