如何处理TextFlow控件的事件?绑定点击事件切换主舞台场景不生效如何解决
问题根因
你绑定的点击事件未触发,是因为Hyperlink本身是自带交互逻辑的可点击控件,你点击文字区域时,鼠标点击事件会优先被Hyperlink拦截消费,不会冒泡到外层的TextFlow,因此你给TextFlow绑定的事件回调无法执行。
解决方法
有两种可用的实现方案,推荐优先选第一种:
- 方案1:直接给Hyperlink绑定点击事件,符合JavaFX控件的设计规范,还能保留Hyperlink默认的点击高亮交互效果
Hyperlink registerLink = new Hyperlink("还没有账号?"); registerLink.setOnAction(actionEvent -> primaryStage.setScene(scene2)); TextFlow flow = new TextFlow(registerLink);
- 方案2:如果确实需要把事件统一绑定在TextFlow上,可以设置Hyperlink不响应鼠标事件,让点击事件透传到外层
Hyperlink registerLink = new Hyperlink("还没有账号?"); // 设为鼠标透明后,该控件不会拦截消费任何鼠标事件 registerLink.setMouseTransparent(true); TextFlow flow = new TextFlow(registerLink); flow.setOnMouseClicked(actionEvent -> primaryStage.setScene(scene2));
内容的提问来源于stack exchange,提问作者Emanuel_PresentInovator
相关产品推荐
相关产品推荐

