如何在自定义JavaFX窗格中继承属性

时间:2015-08-24 15:24:06

标签: inheritance javafx javafx-2 scenebuilder

我想创建一些JavaFX的AnchorPane组件的子类,但在每种情况下都会继承AnchorPane的布局功能。我能够定义一个子类:

package tuto;

import javafx.scene.Node;
import javafx.scene.layout.AnchorPane;

public class TutoPane extends javafx.scene.layout.AnchorPane {

    protected void layoutChildren() {
        super.layoutChildren();
    }

}

...有趣的是我也可以将它导入到Scene Builder中。但是,Scene Builder无法识别继承关系。如果我在Scene Builder中的一个自定义TutoPanes旁边放置一个普通的AnchorPane,我得到这个:

showing component in AchorPane

如您所见,放置在AnchorPane内部的控件(绿色)具有由四个Anchor Pane约束定义的定位。

然而,当我尝试使用TutoPane时,我得到了这个:

showing component in custom pane

放置在TutoPane内部的控件(深蓝色板岩)卡在左上角和"布局"属性没有给我四个AnchorPane约束,我期望由于继承而找到它们。我需要做些什么才能让Scene Builder将我的自定义窗格识别为AnchorPane?是否存在适用于JavaFX的JavaBeans规范的等效项?

1 个答案:

答案 0 :(得分:0)

SceneBuilder不会在其属性选项板中显示“锚点”约束字段。在fxml中添加锚点约束,因为场景构建器工具不会重新声明继承的锚点窗格类。

请参阅以下代码。 HolderPane是一个AnchorPane的子类,这里HolderPane的子节点用锚值硬编码。

<HolderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" 
   minWidth="-Infinity" prefHeight="600.0" prefWidth="500.0" 
    xmlns="http://javafx.com/javafx/8.0.111" 
    xmlns:fx="http://javafx.com/fxml/1">
    <children>
       <AnchorPane AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0 
          AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
       </AnchorPane>
   </children>