【问题标题】:In JavaFX, is an instance of class Pane an individual node?在 JavaFX 中,类 Pane 的实例是单个节点吗?
【发布时间】:2023-03-26 20:59:01
【问题描述】:

因为像 Circle 或 Square 这样的典型节点是类 Node 的实例,而 Pane 是 Parent 的子类,而 Parent 是 Node 的子类,因此,用作根节点的类 Pane 的实例在技术上是一个单独的节点。我错了吗?

【问题讨论】:

  • 什么是单个节点?什么不是单个节点
  • 请澄清“单个节点”的概念。我将其解释为“单个节点”,这需要相反的(“不是单个节点”)来表示“多个节点”。 Node 的单个对象实例怎么可能不仅仅是一个“单个节点”?
  • 窗格/场景中的单个节点是一个单独的形状,如圆形或线(从技术上讲,它们是类节点的对象)。
  • 但是每个Node 都是一个“单独的节点”。你能举个例子说明你认为不是是一个“个体节点”吗?
  • “每个节点”是指节点的每个“实例”?我想我可以将我的问题改写为“用作根节点的类 Pane 的实例是类 Node 的对象吗?”

标签: java javafx nodes


【解决方案1】:

Pane 类的对象将始终是 Node 的实例,因为 Pane 是 Node 的子类

Class Pane :
java.lang.Object
  javafx.scene.Node
    javafx.scene.Parent
      javafx.scene.layout.Region
        javafx.scene.layout.Pane

这意味着:

  • pPane 时,p instance of Node 将为真
  • Node p = new Pane(); 还可以

【讨论】:

  • 我想我理解得很清楚。谢谢你的回答。
  • @NewLearner 如果答案让您满意,您可以接受,如果不满意,请发表评论以解释缺少的内容;)
【解决方案2】:

我明白你的意思了。您在询问是否窗格的继承层次结构类都与窗格一起浮动。答案是否定的,它们不是,是的,它是单个节点。

当继承层次结构被实例化时,就好像每个父级中的所有代码和子级(在您的情况下为 Pane)中的代码都被塞入一个类中,您可以通过调用 Pane() 来实例化该类。

它是一个包含所有父级的所有成员和方法的大二进制 blob。

Java 语言 API 允许您将其视为三个不同的对象,您可以将其向下转换并创建对它的引用,这些引用位于更高的层次结构中,并且通常将其“视为”它是任何给定时间的节点、容器和窗格。

但是只创建了一个 Java 对象的实例。对此的例外是如果有一个内部类。如果有一个内部类,那么实际上,该内部类被创建为一个单独的顶级对象——它是它自己的二进制 blob。

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多