gpt4 book ai didi

java - 模拟MouseEvent、KeyEvent等

转载 作者:行者123 更新时间:2023-11-29 09:07:50 26 4
gpt4 key购买 nike

我正在开发一个在 headless 环境中运行在 Java 上的应用程序。我正在通过自定义类处理所有输入和输出;我的根 JPanel 正在绘制一个 BufferedImage,然后将其呈现给用户。但是,我在传递 MouseEvents 以允许 JPanel 及其子项处理它们时遇到了问题。

目前,我的主类(JPanel 的子类)的构造函数使用:

this.enableInputMethods(true);
this.enableEvents(~0);

然后,在 onMouseDown(MouseEvent e) 和 friend (确实被执行):

dispatchEvent(e);

我也尝试过 processEvent(e)processMouseEvent(e),但无济于事。

我正在生成 MouseEvent,使用 JPanel 子类作为源,MOUSE_PRESSED 及其 friend 作为 ID。

在构造函数或事件处理程序中还有什么我可以做的,这将允许 JPanel 将事件作为普通事件处理,将其传递给它的子级并触发任何 ActionEvents 和焦点变化?

最佳答案

我有一个我目前正在实现的解决方法,手动创建 ActionEvents 并跟踪当前聚焦的组件。我目前正在努力将 MouseEvents 向下传递给子组件,但这就是我得到的。

Component c = findComponentAt(e.getX(), e.getY());
if(c!=null){
ActionEvent ae = new ActionEvent(c,ActionEvent.ACTION_PERFORMED,"");
ActionListener[] listeners = c.getListeners(ActionListener.class);
for(ActionListener l:listeners){
l.actionPerformed(ae);
}
if(c.isFocusable()) setFocusedComponent(c);
}

不可否认,它非常困惑,但由于没有更好的路径可以追求,我不得不以这种方式实现它。

关于java - 模拟MouseEvent、KeyEvent等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13923364/

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