【问题标题】:(SWING) Menu bar actions and state keeping(SWING) 菜单栏动作和状态保持
【发布时间】:2011-02-27 12:56:46
【问题描述】:

我正在编写一个有点类似于 MS Excel 的客户端应用程序 - 它有一个菜单栏,并且您有几个内部框架,每个框架都是处于多个状态之一的文件。

基本流程是这样的:打开文件后点击构建,构建完成后可以导出/保存(其他场景比较复杂)。

我感兴趣的是每次在帧之间切换时如何更改菜单按钮的状态:如果您还没有按下“构建”,则应该禁用“导出”,但是如果您切换到您已经按下“构建”按钮并且它已构建的窗口,即“导出” 按钮应启用。

是否有处理此类事情的设计模式?任何最知名的方法?

【问题讨论】:

    标签: user-interface swing menubar


    【解决方案1】:

    Add an InternalFrameListener 到您创建的每个内部框架,并监听 internalFrameActivated 事件。该事件包含已被激活的框架。询问这个内部框架的状态,了解它是否已经构建,并相应地启用/禁用菜单项。

    【讨论】:

    • 谢谢!您如何建议从内部框架中访问 MenuBar?应该是单例吗?
    • 我认为您不应该从内部框架访问菜单栏。在创建菜单栏的主类中,您应该将 InternalFrameListener 定义为实例变量。此类还应包含负责创建和添加新内部框架的方法(从打开文件的菜单操作中调用)。而这个 createFrame 方法应该在它创建的内部框架上添加内部框架监听器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多