1

我正在做一个有很多按钮和菜单的应用程序,我想在可以或不能执行附加到它们的操作时启用和禁用按钮和菜单项。即保存按钮和保存菜单项只有在有未保存的更改时才会被激活。

问题:我怎样才能有效地做到这一点/正确的方法是什么?

一种解决方案可以是每个按钮和菜单条目都有一个私有变量,并根据需要启用/禁用它。其他解决方案可以将 JToolBar 和 JMenu 的所有组件放在一个数组中并遍历所有组件并根据需要启用/禁用。但我认为有更好的解决方案。任何帮助或指导将不胜感激。

编辑:问题不是如何启用/禁用单个按钮或菜单项,我会知道如何管理应用程序的所有按钮和菜单项的状态。实现这一目标的最佳方法是什么?我已经解释了一些我一直在思考的解决方案,但没有一个能说服我。

4

2 回答 2

4

该类Action已经支持这一点。请参阅Action#isEnabledAction#setEnabled方法。调用 setter 将触发一个事件,在该事件上Action设置 this 的 UI 将启用/禁用自身。

Action可以看作是您的 UI 按钮/菜单项/...的模型。所有状态都在模型中存储和更新,视图需要反映这一点(MVC 模式)。

于 2013-02-05T16:52:16.773 回答
1

1)禁用点击使用:

JButton#setEnabled(boolean)

JMenuItem#setEnabled(boolean)

2)禁用ActionListener一段时间内使用私有布尔变量

public void actionPerformed (ActionEvent ae) {
    if (!enabled) return;

    // rest of code
}
于 2013-02-05T16:53:01.837 回答