Мне потребовалось некоторое время, чтобы понять, что происходит с событиями мыши, проходящими через мои блокирующие диалоговые окна, когда я закрывал их, но я наконец понял, почему. Я до сих пор не знаю хорошего способа исправить это.
У меня есть настраиваемое диалоговое окно (которое блокирует мышь) с кнопкой закрытия. Когда я нажимаю кнопку закрытия, я удаляю диалоговое окно со сцены, но 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