2009-10-04 100 views
0

当我创建一个对象时,我可以设置一个函数吗?在javafx中处理鼠标事件

鉴于我有一个容器类和类的CustomButton:

function doSomething():Void{} 

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

} 

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

回答

1

你最简单的变化是改变:显然,如果你需要一个定制版本,可以延长按钮

function doSomething():Void{} 

function doSomething(e:MouseEvent):Void{} 

action属性是好的,但我确定你想要一些自定义翻转效果或使用onMouseEntered等

+0

这些事情的结合起来了。我确实尝试了将MouseEvent作为参数发送,但那不起作用,并且我无法找到关于传递函数语法的任何文档。 var towerButton:GenericButton = GenericButton { onMouseClicked:doSomething } 这将正确调用doSomething(e:MouseEvent)。 – Vargen 2009-10-07 10:16:10

+0

哦,你想传递一个函数给另一个? function doSomething(function(MouseEvent):otherfunc):Void {...} – 2009-10-07 15:26:54

1

如果我已经正确理解您的需求,我认为可以通过一些语法更改来实现。

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 ] 
    } 
}