gpt4 book ai didi

java - 使用 KeyboardFocusManager

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:00 26 4
gpt4 key购买 nike

我正在尝试将一些 KeyEventPostProcessor 添加到几个弹出窗口,对于我显示的每个弹出窗口,如下所示:

    KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventPostProcessor(new KeyEventPostProcessor() {

public boolean postProcessKeyEvent(KeyEvent e) {
//do something
return true;
}
});

但问题是“KeyEventPostProcessors 将按照它们添加的顺序得到通知”,我需要相反的顺序。我可以这样做吗?

最佳答案

您可以创建自己的类实现KeyEventPostProcessor,您将所有其他处理器交给它,并让您自己的类按照您喜欢的顺序调用处理器(显然只将您自己的处理器添加到KeyboardFocusManager。)但是,这将只允许在调用时返回单个返回值,而不是每个处理器都返回一个值。

如果这是一个问题,那么您很可能必须移除所有处理器并重新添加它们。 KeyboardFocusManager 有一个名为 getKeyEventPostProcessors() 的方法,它将返回所有处理器。您可以检索该列表,迭代它并使用 removeKeyEventPostProcessor() 删除处理器,首先添加您自己的处理器,然后再次迭代列表并添加所有以前的处理器。然而,这将是相当低效的。

如果您一次添加所有处理器但希望颠倒顺序,您可以暂时将它们保存到一个列表中,然后以相反的顺序遍历该列表,仅当您已经准备好所有处理器时才将它们添加到 KeyboardFocusManager 中。

除了上述变通办法外,Java API 似乎没有任何方法可以真正让它以相反的顺序发送事件。

关于java - 使用 KeyboardFocusManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6830395/

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