当我关闭它们时,我花了一段时间才意识到鼠标事件通过阻塞对话框时发生了什么,但我终于明白了原因。我仍然不知道解决这个问题的好方法。JavaFX MouseEvent继续当我删除它发生的对象
我有一个自定义对话框(即阻止鼠标)与关闭按钮。当我点击关闭按钮时,我从场景中移除了对话框,但是JavaFx仍在处理MouseEvent,现在它发现在取消按钮所在的位置没有任何屏幕,因此组件接收到一个MouseEvent。当我看到他们按下取消并删除对话框时,如何使mouseEvent停止处理?或者,有没有办法让对话框的删除不会发生,直到它完成处理MouseEvent?
示例代码的问题:
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.shape.Rectangle;
import javafx.scene.input.MouseEvent;
import javafx.scene.control.Button;
var theScene:Scene;
var btn:Button;
Stage {
title: "Application title"
scene: theScene= Scene {
width: 500
height: 200
content: [
Rectangle{
width: bind theScene.width
height: bind theScene.height
onMouseClicked: function(e:MouseEvent):Void{
println("Rectangle");}
},
Button{
layoutX: 20 layoutY: 50
blocksMouse: true
text: "JustPrint"
action:function():Void{
println("JustPrint");}
},
btn = Button{
layoutX: 20 layoutY: 20
blocksMouse: true
text: "Cancel"
action:function():Void{
println("Cancel");
delete btn from theScene.content;}
},
]
}
}
当你按下 “JustPrint” 你:
JustPrint
当你按下 “取消”,您可以:
Cancel
Rectangle
我确实需要的onMouseClicked在我原来的计划背景(或至少onMouseReleased这给了同样的问题),但它看起来像我可以只删除按钮动作,并使其响应onMouseClicked,而问题解决了。 感谢您的帮助。 凯尔 – Kyle 2010-06-10 15:29:05