gpt4 book ai didi

java - ZK 7.X中如何订阅KeyEvent

转载 作者:行者123 更新时间:2023-12-02 03:01:22 24 4
gpt4 key购买 nike

我们正在创建一个窗口来添加附件。可以通过拖放或使用 Ctrl+V 从剪贴板复制来添加附件。可以实现拖拽,但无法订阅Window或Page上的KeyEvent。

尝试了以下代码但失败:

  1. onPageAttached 和 onPageDetached

    @Override
    public void onPageDetached(Page page) {
    super.onPageDetached(page);
    try {
    SessionManager.getSessionApplication().getKeylistener().removeEventListener(Events.ON_CTRL_KEY, this);
    } catch (Exception e) {}
    }

    @Override
    public void onPageAttached(Page newpage, Page oldpage) {
    super.onPageAttached(newpage, oldpage);
    if (newpage != null) {
    SessionManager.getSessionApplication().getKeylistener().addEventListener(Events.ON_CTRL_KEY, this);
    }
    }
  2. 在实现 EventListener 的自定义 Window 类中添加EventListener。

    this.addEventListener(Events.ON_CTRL_KEY, this);

我在网上看到的所有代码示例都是 ZUL 文件。但我需要动态地使用java代码来实现这一点。

我可以订阅其他事件,例如点击事件、关闭事件等。

最佳答案

您需要配置一些内容来监听按键:

1:目标如果你想监听整个页面的按键,你需要做的第一件事就是在你的 zk.xml 中声明这个库属性: https://www.zkoss.org/wiki/ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.zk.ui.invokeFirstRootForAfterKeyDown.enabled值为“true”

此库属性将每个关键监听器事件重定向到页面的根组件。如果您不设置它,您将只能在组件获得焦点时监听该组件上的按键。

2:关键声明您需要使用 comp.setCtrlKeys(ctrlKeys); 声明您要监听的按键;其中 ctrlKeys 是包含您要收听的按键的字符串例如,ctrl+v 将是 comp.setCtrlKeys("^v");

3:监听者您的示例代码已经有此版本。您可以使用 add addEventLister(this) 语法,但这会使任务变得过于复杂。最简单的选择是内联监听器(如果您不重用它):

//comp here is the root div of my page
comp.setCtrlKeys("^v");
comp.addEventListener(Events.ON_CTRL_KEY, new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
Clients.log("do something at page level");
}
});

参见this fiddle !!!这个 fiddle 无法在页面级别工作!!!!由于 zkfiddle 上无法设置库属性。只需使用包含上面属性的 zk.xml 在本地运行它即可获得页面级监听器。

关于java - ZK 7.X中如何订阅KeyEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61395947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com