Il m'a fallu du temps pour réaliser ce qui se passait avec les événements de souris passant par mes boîtes de dialogue de blocage lorsque je les fermais, mais j'ai finalement compris pourquoi. Je ne connais toujours aucun moyen de le réparer.JavaFX MouseEvent continue lorsque je supprime l'objet sur lequel il s'est produit
J'ai une boîte de dialogue personnalisée (qui bloque la souris) avec un bouton de fermeture. Lorsque je clique sur le bouton de fermeture, je supprime la boîte de dialogue de la scène, mais JavaFx traite toujours le MouseEvent et maintenant il trouve qu'il n'y a rien qui bloque l'écran derrière le bouton d'annulation, de sorte que le composant reçoit un MouseEvent. Comment faire pour que mouseEvent arrête le traitement quand je vois qu'ils ont appuyé sur annuler et supprimer la boîte de dialogue? Ou, y a-t-il un moyen de faire en sorte que la suppression de la boîte de dialogue ne se produise qu'après le traitement de MouseEvent?
Exemple de code pour le problème:
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;}
},
]
}
}
Lorsque vous appuyez sur "JustPrint" vous obtenez:
JustPrint
Lorsque vous appuyez sur "Annuler" vous obtenez:
Cancel
Rectangle
Je l'ai besoin du onMouseClicked pour l'arrière-plan dans mon programme original (ou au moins onMouseReleased qui donne le même problème), mais il semble que je peux supprimer l'action du bouton et faire répondre à onMouseClicked à la place et le problème est résolu. Merci pour votre aide. Kyle – Kyle