我有一个tabpane,动态加载标签。每个选项卡都有一个锚定板作为其内容。 除了一个小细节之外,这很有用:当我调整主应用程序的大小时,选项卡内容不会调整大小。
因此,假设我最大化了我的应用程序,标签内容保留其“小”尺寸。如果根目录是一个锚定窗格,我如何触发选项卡内容的大小调整?
我是javafx世界的新手,在我的无知中,我尝试将锚定页包装在hbox中并将其设置为选项卡的内容无效。
有什么想法吗?
答案 0 :(得分:0)
这是如何调整组件大小的示例,但想法是一样的。
Rectangle rec = new Rectangle();
rec.widthProperty().bind(stackPane.widthProperty().subtract(50));
rec.heightProperty().bind(stackPane.heightProperty().subtract(50));
您必须获得主舞台的大小,并使用.bind(stackPane.heightProperty().subtract(50));
动态缩小大小。
但我是这项技术的新手,更有经验的人可以给你更准确的答案。
答案 1 :(得分:0)
将AnchorPane约束放入TabPane(不是Tabs,要小心),以便根据容器AnchorPane调整自身大小。
如果您使用的是SceneBuilder,则TabPane实例的“布局”部分可以帮助您。如果您还动态创建TabPane,则可以将此constaints设置为AnchorPane.setLeftAnchor(theTabPane, ...)
,AnchorPane.setTopAnchor(theTabPane, ...)
等。
答案 2 :(得分:0)
我目前有一个可行的解决方案,但我很确定这不是最干净的方法:
final Pane root = loader.getRoot();
tbsCore.widthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> arg0, Number arg1, Number newValue) {
root.setPrefWidth(newValue.doubleValue());
}
});
tbsCore.heightProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> arg0, Number arg1, Number newValue) {
root.setPrefHeight(newValue.doubleValue());
}
});
请注意,“root”是我想要放在选项卡中的窗格,而“tbsCore”是TabPane。
答案 3 :(得分:0)
据你所说,我明白你遇到了我今天面临的同样问题!使TabPane
填充窗口的空间很容易,但内容没有调整大小。
了解发生了什么的一些提示:
Node
设置不同的背景颜色(或边框),以查看哪些Node
增长,哪些不增长。调整大小时,您可能会看到AnchorPane
也在调整大小,但内容不是。preferredWidth
的任何preferredHeight
,preferredSize
,maxWidth
,maxHeight
,maxSize
或Node
成长。Node
或其子项增长设置一个特殊属性。一些例子是:
最后,在代码中查找隐藏的Node
!例如,我使用以下代码向GridPane
添加了Tab
:
Tab tab = new Tab("Tab Title", new ScrollPane(myHugeGridPane));
这个“隐藏”的ScrollPane就是问题所在。