Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在GWT中处理应用程序命令_Gwt_Command - Fatal编程技术网

在GWT中处理应用程序命令

在GWT中处理应用程序命令,gwt,command,Gwt,Command,Swing使用动作跨多个GUI组件(如菜单项和toobar按钮)共享功能和状态。XUL在其命令框架中使用了类似的方法 处理GWT中类似需求的典型/最佳方法是什么?我特别感兴趣的是显示菜单项或按钮是启用还是禁用。我使用命令类。GWT菜单项可以有一个与之关联的命令。以下是一些相关的代码片段: Command printCommand = new Command() { @Override public void execute() { myEventBus.f

Swing使用动作跨多个GUI组件(如菜单项和toobar按钮)共享功能和状态。XUL在其命令框架中使用了类似的方法


处理GWT中类似需求的典型/最佳方法是什么?我特别感兴趣的是显示菜单项或按钮是启用还是禁用。

我使用命令类。GWT菜单项可以有一个与之关联的命令。以下是一些相关的代码片段:

Command printCommand = new Command() {
      @Override
      public void execute() {
        myEventBus.fireEvent(new PrintEvent());
      }
    };

MenuItem print = new MenuItem();

print.setCommand(printCommand);
请注意,只需调用printCommand.execute()即可使printCommand执行。例如,您可以有一个打印按钮,ClickHandler为其调用printCommand.execute(),因此它的效果与上述代码中的菜单项完全相同


现在我知道,在Swing中,动作和小部件之间有一个巧妙的交互,通过启用或禁用动作,可以同时启用或禁用所有小部件。这个命令没有那么紧密地绑定在一起,我认为GWT中没有任何东西像Swing中的那种一站式启用/禁用特性。话虽如此,您可能能够扩展命令,以便以某种方式将触发该命令的小部件注册到该命令中,并且该命令有一个enable methid,当调用该命令时,它会根据需要遍历小部件的启用和禁用列表。

是,Swing组件将自己注册为动作的PropertyListener,因此可以反映动作状态的更改。如果我理解正确(我意识到这是即兴的:),您的方法意味着设置某种类型的ActionManager来维护命令集合和另一种映射类型结构,该结构使用命令名和小部件ID将命令映射到小部件。请记住平衡解决方案的成本和GUI的复杂性。如果您有十几个不同的小部件共享同一个操作,那么这将是有意义的。但是,如果操作只能通过一个或两个小部件访问,那么可能只需要硬编码enable/disable调用。但是…如果您希望在未来的应用程序中反复使用此功能…那么,即使这一次只针对几个小部件,也可能值得解决此问题。