我在GlassPane中安装了这样一个层:
MobileApplication.getInstance().getGlassPane().getLayers().add(myLayer);现在,我希望myLayer的内容会在glassPane的中心被合并,就像我在View中添加一个层一样。
view.getLayers().add(myLayer)尽管将对齐设置为中心,但我得到了以下结果:

我注意到添加到glassPane中的层的layoutBounds为"0",而视图中的层的layoutBounds与视图layoutBounds相同。
此外,我不需要像胶子文档中所述那样调用layer.show() (“然后通过调用show()、.”来实现层的显示),因为该层在添加到层后立即显示。
我是不是遗漏了什么?
发布于 2016-04-03 22:57:34
我建议您查看详细的文档这里,而不仅仅是JavaDoc。
在这里,您将找到一个更详细的解释,如何添加和创建层。
首选的方法是使用addLayerFactory(),例如:
@Override
public void init() {
addViewFactory(BASIC_VIEW, () -> new BasicView(BASIC_VIEW));
addLayerFactory("My Layer", () -> new SidePopupView(new StackPane(new Button("Side"))));
}该层将被隐藏,除非您用MobileApplication.getInstance().showLayer("My Layer")显示它。
您可以创建自己的Layer实现,例如:
private class MyLayer extends Layer {
private final Node root;
private final double size = 150;
public MyLayer() {
root = new StackPane(new Button("A custom layer"));
root.setStyle("-fx-background-color: white;");
getChildren().add(root);
getGlassPane().getLayers().add(this);
}
@Override
public void layoutChildren() {
root.setVisible(isShowing());
if (!isShowing()) {
return;
}
root.resize(size, size);
resizeRelocate((getGlassPane().getWidth() - size)/2, (getGlassPane().getHeight()- size)/2, size, size);
}
}把它加到工厂里:
addLayerFactory("My Layer", () -> new MyLayer());但请注意,您将不得不调整大小和重新定位,否则您将得到0,0的位置,如您的图片,并照顾它的可见度。
或者你可以使用内置层,比如SidePopupView,你不需要担心这些更低层次的细节。
https://stackoverflow.com/questions/36391729
复制相似问题