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

时间:2017-12-26 08:48:15

标签: javafx tabpanel

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

1 个答案:

答案 0 :(得分:1)

虽然找不到答案的解决方案,因为标签实际上并不是节点,也没有鼠标点击监听器,但解决了性能问题。

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

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

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

  

Scene loads too slow

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