我想创建一些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,我得到这个:
如您所见,放置在AnchorPane内部的控件(绿色)具有由四个Anchor Pane约束定义的定位。
然而,当我尝试使用TutoPane时,我得到了这个:
放置在TutoPane内部的控件(深蓝色板岩)卡在左上角和"布局"属性没有给我四个AnchorPane约束,我期望由于继承而找到它们。我需要做些什么才能让Scene Builder将我的自定义窗格识别为AnchorPane?是否存在适用于JavaFX的JavaBeans规范的等效项?
答案 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>