【发布时间】:2021-04-30 23:44:36
【问题描述】:
这是我的问题的背景:
我有一个带有许多 TitledPanes 的手风琴的 GUI,每个 Titledpane 都包含一个来自 controlsFX 包的电子表格视图。 代码中有一个搜索功能,其中打开了一个 Titledpane,并使用电子表格单元类型的编辑方法打开了电子表格视图中的特定单元格用于文本输入。
如果 TitledPane 已经打开,这可以正常工作,但如果它必须先打开,则编辑方法的调用将失败。 (该程序实际上是用 scalafx 编写的,但我认为这并不重要,因为 scalafx 只是 javaFX 的一个包装器,并且调用了所有 javaFX 方法。) 来自 scalafx 用户组的人发现,当我输入 350 毫秒的等待时间(TitledPane 的动画时间为 300 毫秒)时,单元格上的“编辑”调用成功。他认为调用失败是因为 TitledPane 的内容渲染不完整。 当我关闭 TitledPane 的动画时也是如此。在这种情况下,等待 50ms 就足够了,这在动画开启时不起作用。
无论如何 - 我担心只等待 350 毫秒并希望这将始终有效。这让我回到了这个问题:我如何才能知道 TitledPane(或电子表格视图?)内的渲染已经完成,以便我可以安全地在电子表格视图上调用我的编辑方法?
【问题讨论】:
-
令人惊讶的是(我们在 SwingX 中拥有它......那些日子;),不支持。在展开/折叠阶段更改的属性是内容的高度:所以我的第一个尝试是在“最大”时收听并开始编辑 - 这本身有点hacky可能会由于布局限制而改变 -的可能值。
-
也许这里最好的选择就是关闭 TitledPanes 的动画?
标签: javafx rendering controlsfx spreadsheetview