java - 如何在一个应用程序中管理 GUI 组件的启用/禁用

标签 java swing user-interface jbutton

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

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

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

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

最佳答案

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

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

关于java - 如何在一个应用程序中管理 GUI 组件的启用/禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14712566/

相关文章:

java - 允许父级处理鼠标事件

java - Osgi 中的 NoClassDefFoundError w/Felix, Ant

java - 将二进制字符串转换为十六进制字符串JAVA

java - Jtable 作为 Jtree 节点

java - 这个小部件在 Java 中叫什么?

c++ - 隐藏多个 CMFCEditBrowseCtrl 的文件浏览按钮

java - 我希望我的图形用户界面接受一个整数

java - 在默认接口(interface)方法中使用对象的类型参数

java - 为什么 Google Collections 中没有 SortedMultiset?

Java JApplet : Why aren't my components appearing on screen?