JavaFX : IllegalArgumentException when mouse is clicked any where on scene

标签 java javafx-2 mouseevent illegalargumentexception

您好,当我单击任何控件或场景的空白区域时,我得到了 IllegalArgumentException。下面是堆栈跟踪。我无法为每个控件的 MouseEvent 编写一个方法。当我单击场景中的空白区域或禁用的控件时,您能否提出一个取消此鼠标事件的解决方案。

java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1435)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
    at javafx.event.Event.fireEvent(Event.java:171)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3324)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3164)
    at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3119)
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1559)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2261)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:228)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:528)
    at com.sun.glass.ui.View.notifyMouse(View.java:922)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
    at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
    at java.lang.Thread.run(Thread.java:722)

最佳答案

我遇到了同样的问题,终于找到了答案。我正在使用最新的 SceneBuilder 生成 FXML。完成后,我使用“查看/显示示例 Controller 骨架”,它很好地列出了所需的 @FXML 字段和操作例程。 我用于购买的 ListView 在 Builder 的代码选项卡中设置了一个 #purchaseLVClicked 例程。不幸的是,建议的处理程序是:

    @FXML
    void purchaseLVClicked(ActionEvent event) {
    // Do something
    }

看到问题了吗?匹配的不是例程的名称---而是应该是参数 (MouseEvent me) 而不是 (ActionEvent 事件) .当我修复它时,问题就消失了。道德人士不会在没有仔细检查的情况下相信“建议”。

关于JavaFX : IllegalArgumentException when mouse is clicked any where on scene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20328255/

相关文章:

java - 将 .so 文件导入 android studio 时出错

JavaFX 场景构建器 Controller

javascript - 鼠标点击触发鼠标离开

javascript - 如何在python上三次单击以选择一个段落?

java - 如何在spring mvc中将用户表单数据发送到服务器

java - 处理键值存储中的集合(列表或集合)的最佳方法是什么?

java.sql.SQLException : ORA-00902: invalid datatype 异常

java - 替换 JavaFX GridPane 中(行,列)处的节点

java - 如何重用 JavaFX GUI?我可以动态更改 Controller 吗?

jQuery mousedown 找到触发事件的确切元素