嗨,当我点击任何控件或场景的空白区域时,我得到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)
答案 0 :(得分:6)
我遇到了同样的问题,终于找到了答案。我正在使用最新的SceneBuilder来生成FXML。完成后,我使用'查看/显示样本控制器框架'它很好地列出了所需的@FXML字段和动作例程。
我购买的ListView在Builder的代码选项卡中设置了#purchaseLVClicked
例程。不幸的是,建议的处理程序例程是:
@FXML
void purchaseLVClicked(ActionEvent event) {
// Do something
}
看到问题?它不是常规的 名称 ---匹配---但 参数 应该是(MouseEvent me)
而不是(ActionEvent event)
。当我解决这个问题时,问题就消失了。道德不相信建议'没有仔细检查它们。
答案 1 :(得分:0)
发生的事情是你的场景试图调用一个不存在的方法,所以你必须实现它或让组件停止尝试调用这个方法。
因此,您既可以在Controller中实现该方法,也可以在.fxml
文件中删除对该方法的引用。