javafx中的鼠标事件处理

javafx中的鼠标事件处理,javafx,mouseevent,Javafx,Mouseevent,我可以在创建一个对象时设置一个函数吗 假设我有一个容器类和一个CustomButton类: function doSomething():Void{} var button:CustomButton = CustomButton{ posX : 50; posY = 100; onMouseClicked: doSomething; } 简而言之:我需要主容器对象来处理放置在容器中的对象中发生的鼠标事件。如果我正确理解了您的要求,我认为可以通过一些语法更改来实现。显然,如

我可以在创建一个对象时设置一个函数吗

假设我有一个容器类和一个CustomButton类:

function doSomething():Void{}

var button:CustomButton = CustomButton{
   posX : 50;
   posY = 100;
   onMouseClicked: doSomething;

}

简而言之:我需要主容器对象来处理放置在容器中的对象中发生的鼠标事件。

如果我正确理解了您的要求,我认为可以通过一些语法更改来实现。显然,如果需要自定义版本,可以扩展按钮:

function doSomething():Void{
    println("clicked");
}

var button:Button = Button{
    text: "Click Me"
    translateX: 50;
    translateY: 100;
    action: doSomething
}
Stage {
    title : "ButtonTest"
    scene: Scene {
        width: 200
        height: 200
        content: [ button ]
    }
}

最简单的更改是更改:

function doSomething():Void{}


action属性很好,但我确信您需要一些自定义的滚动效果或使用onMouseEntered等的东西。

这些东西的组合已经解决了。我确实尝试过将MouseEvent作为参数发送,但没有成功,我也找不到任何关于传递函数语法的文档。var towerButton:GenericButton=GenericButton{onmouseclicated:doSomething}这将正确调用doSomething(e:MouseEvent)。哦,是否要将函数传递给另一个?函数doSomething(函数(MouseEvent):otherfunc):Void{…}
function doSomething(e:MouseEvent):Void{}