【发布时间】:2014-10-09 17:16:26
【问题描述】:
我需要构建一个视图,它有一个 4 层嵌套的 Multi-Accordion,里面有很多复选框。整个 Accordions 中总共可能有大约 30-40 个复选框。
下一步将是,我在这一切背后有某种逻辑。根据复选框的选择组合,我将相应地更改文本标签。
我的想法是:我把所有这些复选框都打上来,并给它们一个数字 fx:id 代表嵌套手风琴图中的位置。类似“1_1”或“2_4_1”的东西。 之后,我构建了一个 ChangeListener,调用一个复选框选择方法。我可以查找选中框的 Id,在我的数据中查找它(查看属于它的 Text 以及是否有任何规则干扰其他框)并在将 id 及其文本放入 Map 时相应地处理逻辑或列出以供以后保存并跟踪选中的框。
现在我知道了,获取 fx:id 并不是 JavaFX 想要我做的。我也无法在 FXML 内的自定义属性中提供自定义 ID(找不到任何关于此的内容)。 我现在的知识已经接近尾声了(我刚开始接触 JavaFX 并掌握了一些基本的 Java 知识),在我看来,我从错误的角度来处理这个话题。
我现在的问题是:根据检查的框处理数十个复选框并触发代码中的逻辑的最佳实践是什么,而不为每个复选框编写 ChangeListener 给我留下一些(imo)丑陋的代码一路走来。
编辑:我忘了提一下:我确实通过编写一个自定义 CheckboxChangeListener 来实现某种功能解决方案,该 CheckboxChangeListener 引用了调用 addListener 方法的元素并在此引用上使用“getId()”。不过我知道,这个方法引用了 fxml 元素的 css:id 而不是它的 fx:id,我不太确定这是否是正确的方法
【问题讨论】:
标签: java user-interface javafx