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