【问题标题】:Get property from checkbox in gridpane [duplicate]从网格窗格中的复选框获取属性[重复]
【发布时间】:2019-11-08 03:56:00
【问题描述】:

这是家庭作业的一部分。

如何访问放置在网格窗格内的复选框的属性?如果我通过:

.getChildren()

它返回一个节点列表,我可以使用它访问

.get(i)

然后自然返回节点类型的对象,但是通过它我无法访问复选框的属性,只能访问节点将具有的属性。我尝试通过阅读文档和谷歌搜索找到解决方案,但似乎无法找到解决方案。

Gridpane里面是checkbox填的,所以不用检查一个节点是否是checkbox,我需要检查每个box的selected属性。

我希望有一个指向正确方向的指针。

【问题讨论】:

  • 除了强制转换之外,另一个选项是保持对每个 CheckBox 的直接引用(例如在字段中)。如果有太多 CheckBox 对象需要在不同的字段中维护,那么您可以将它们存储在它们自己的 List<CheckBox> 或其他一些集合中。
  • Slaw 的建议将是我的首选方法:GridPane 中的孩子的顺序可能与 GridPane 中的位置相对应,也可能不对应,如果没有必要检索孩子的位置您可以只使用嵌套的 CheckBox[][] 数组或类似的东西。此外,如果您决定在未来某个时间向GridPane 添加更多元素,这不会中断...
  • 我会记住这个建议,但更多的是提醒我必须在整体编程方面做得更好。我明白你们在说什么,但我从来没有应用过。

标签: java javafx


【解决方案1】:

当您获得Node 时,将其转换为CheckBox,然后调用isSelected() 或其他方法。

也许是这样的?

for (Node node : gridplane.getChildren()) {
    if (node instanceof CheckBox) {
        CheckBox ckbox = (CheckBox)node;
        // do stuff with ckbox.
    }
}

【讨论】:

  • 是的!这样可行。我有一个想法,铸造可能会起作用,但我不太熟悉这样做。我应该更多地阅读它。谢谢。
猜你喜欢
  • 2017-06-23
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
  • 2013-07-31
  • 2011-03-03
  • 1970-01-01
  • 2023-03-08
  • 2013-09-28
相关资源
最近更新 更多