JavaFX如何检查鼠标单击是否触发Tab选择

问题描述 投票:1回答:1

我有一个标签窗格,其中包含一堆标签(显然)。通常,您可以通过调用Tab上的setOnSelectionChanged()为每个选项卡设置一个监听器。但是,如果以某种方式重新组织TabPane,则选项卡窗格会自动选择列表中的第一个选项卡。这给我带来了一些性能问题所以我想知道是否有办法知道鼠标单击是否导致选择了Tab。显然,标签不能有onMouseClick()听众。

javafx tabpanel
1个回答
1
投票

虽然找不到答案的解决方案,因为制表符实际上不是节点并且没有鼠标单击侦听器,但性能问题已得到解决。

更改标签时,我(懒洋洋地)重新创建整个视图并将模型应用于视图。每次更换标签时,这会导致大约140毫秒或更长的延迟。在实现搜索框以查找正确的选项卡时,这是一个更大的问题,因为当从搜索中重新创建选项卡时,视图正在重新创建,因为选项卡已更改(选项卡窗格在添加新选项卡时自动选择第一个选项卡) )。

最终,设计被更改为让控制器创建一次视图,并在更改选项卡时将模型挂钩到视图,而不是一遍又一遍地重新创建视图。

如果您遇到性能问题并且对MVC / JavaFX编程相对较新,我强烈建议您查看这篇文章:

Scene loads too slow

目前更换标签大约需要15毫秒,这是一项重大改进!

© www.soinside.com 2019 - 2024. All rights reserved.