JavaFX-如何扩展我的;“窗口”;从哪里开始,舞台,场景,窗格?

JavaFX-如何扩展我的;“窗口”;从哪里开始,舞台,场景,窗格?,java,swing,javafx,Java,Swing,Javafx,我引用window是因为我并不是指API中的任何类,而是指window的字面意义(框架、面板、表单等等) 在Swing中,我曾经创建一个从JPanel扩展的基类,然后我从该基类扩展了所有与视图相关的类。这非常有用,因为我可以将这些面板放在它们自己的JFrames上,或者放在框架上的MyPanel的另一个面板中。在某种程度上,他们是如何表现出来的与课堂本身无关。而且它们每个都可以有不同的布局(与从JavaFX布局窗格扩展相反) 如何在JavaFX中实现这一点?您可以扩展窗格类,它是JavaFX中所

我引用window是因为我并不是指API中的任何类,而是指window的字面意义(框架、面板、表单等等)

在Swing中,我曾经创建一个从
JPanel
扩展的基类,然后我从该基类扩展了所有与视图相关的类。这非常有用,因为我可以将这些面板放在它们自己的
JFrames
上,或者放在框架上的
MyPanel
的另一个面板中。在某种程度上,他们是如何表现出来的与课堂本身无关。而且它们每个都可以有不同的布局(与从JavaFX布局窗格扩展相反)


如何在JavaFX中实现这一点?

您可以扩展
窗格
类,它是JavaFX中所有窗格的基类。这不会执行任何布局

编辑:我意识到您还可以使用更通用的类
区域
。此类可以包含其他节点,也可以设置样式

例如,如果您需要一个新的窗格,您可以扩展
YourCustomRegion

public class YourPane extends YourCustomRegion {

   public YourPane() {
      getChildren().add(new HBox()); //you can add children with this method
   }

}

如果您需要在所有自定义窗格中使用通用的内容,您可以在从
区域扩展而来的
自定义区域中执行该操作,然后它可以将GridPane、BorderPane等作为其根节点吗?我假设它必须有绝对的定位和大小,就像空布局swing一样。我用另一个更适合你的选项更新了我的答案。它使用Region类而不是窗格。但我真的认为您应该使用窗格的子类,这些子类为您管理布局。谢谢。我试过了。这个(窗格和区域)实际上可以工作,但我最终没有继承任何FX类。取而代之的是,我的基类将rootnode、stage和scene作为成员,它将根据显示方式惰性地创建stage和scene。我还为“rootNode”使用了一个类型参数,以避免在子类中强制转换的需要。“在Swing中,我曾创建一个从
JPanel
扩展而来的基类。”然后,您就已经做错了。我所见过的扩展
JPanel
的唯一有效案例是定制绘画。所有swing类的add方法都需要一个jcomponent。使用add(myobject)而不是add(myobject.getSomething())更方便。你认为我因为继承而遇到了什么问题(但我不知道:)?这个链接解释得比我想(甚至尝试)都好。最终,按照您的喜好编写代码。我会把评论留在那里,作为对其他人的警告。