JavaFX - BorderPane,确保右窗格始终获得最小宽度
JavaFX - BorderPane, ensuring that Right Pane gets always a minimum width
我有以下 JavaFX FXML 结构:
<BorderPane fx:id="mainWindow" prefHeight="500.0" prefWidth="800.0" styleClass="mainFxmlClass" xmlns:fx="http://javafx.com/fxml/1">
<stylesheets>
<URL value="@mainwindow.css"/>
</stylesheets>
<top>
<fx:include fx:id="buttonPanel" source="/com/example/app/chart/buttons/buttonPanel.fxml" />
</top>
<center>
<BorderPane fx:id="chartContainer">
<center>
<fx:include fx:id="chartPanel" source="/com/example/app/chart/chartpanel/chartPanel.fxml" />
</center>
<right>
<fx:include fx:id="rightAxisPanel" source="/com/example/app/chart/rightaxis/rightAxisPanel.fxml" />
</right>
</BorderPane>
</center>
</BorderPane>
成为 chartPanel
和 rightAxisPanel
:
<AnchorPane fx:id="chartPanel" styleClass="chartPanelClass" xmlns:fx="http://javafx.com/fxml/1">
<stylesheets>
<URL value="@chartpanel.css"/>
</stylesheets>
</AnchorPane>
和
<AnchorPane fx:id="rightAxisPanel" prefWidth="100.0" minWidth="100.0" styleClass="rightAxisPanelClass" xmlns:fx="http://javafx.com/fxml/1">
<stylesheets>
<URL value="@rightaxispanel.css"/>
</stylesheets>
</AnchorPane>
这会生成下图:
到目前为止,还不错。
但是,如果我减小 window 的大小,则右侧面板会被截断 - 查看与 rigthAxisPanel 对应的黄色区域如何被截断-。
如何让中央面板被截断?
中心的最小宽度AnchorPane
防止它收缩。将该值设置为 0 以确保允许缩小。
此外,您应该将 clip
应用于 AnchorPane
以避免其内容显示在其右边界的右侧。如果您在右侧使用(半)透明背景,请更改 viewOrder
或者如果您将右侧节点放在外部 BorderPane
.
中,则可能会发生这种情况
<AnchorPane fx:id="chartPanel" styleClass="chartPanelClass" xmlns:fx="http://javafx.com/fxml/1" minWidth="0">
<stylesheets>
<URL value="@chartpanel.css"/>
</stylesheets>
<clip>
<Rectangle width="${chartPanel.width}" height="${chartPanel.height}"/>
</clip>
</AnchorPane>
我有以下 JavaFX FXML 结构:
<BorderPane fx:id="mainWindow" prefHeight="500.0" prefWidth="800.0" styleClass="mainFxmlClass" xmlns:fx="http://javafx.com/fxml/1">
<stylesheets>
<URL value="@mainwindow.css"/>
</stylesheets>
<top>
<fx:include fx:id="buttonPanel" source="/com/example/app/chart/buttons/buttonPanel.fxml" />
</top>
<center>
<BorderPane fx:id="chartContainer">
<center>
<fx:include fx:id="chartPanel" source="/com/example/app/chart/chartpanel/chartPanel.fxml" />
</center>
<right>
<fx:include fx:id="rightAxisPanel" source="/com/example/app/chart/rightaxis/rightAxisPanel.fxml" />
</right>
</BorderPane>
</center>
</BorderPane>
成为 chartPanel
和 rightAxisPanel
:
<AnchorPane fx:id="chartPanel" styleClass="chartPanelClass" xmlns:fx="http://javafx.com/fxml/1">
<stylesheets>
<URL value="@chartpanel.css"/>
</stylesheets>
</AnchorPane>
和
<AnchorPane fx:id="rightAxisPanel" prefWidth="100.0" minWidth="100.0" styleClass="rightAxisPanelClass" xmlns:fx="http://javafx.com/fxml/1">
<stylesheets>
<URL value="@rightaxispanel.css"/>
</stylesheets>
</AnchorPane>
这会生成下图:
到目前为止,还不错。
但是,如果我减小 window 的大小,则右侧面板会被截断 - 查看与 rigthAxisPanel 对应的黄色区域如何被截断-。
如何让中央面板被截断?
中心的最小宽度AnchorPane
防止它收缩。将该值设置为 0 以确保允许缩小。
此外,您应该将 clip
应用于 AnchorPane
以避免其内容显示在其右边界的右侧。如果您在右侧使用(半)透明背景,请更改 viewOrder
或者如果您将右侧节点放在外部 BorderPane
.
<AnchorPane fx:id="chartPanel" styleClass="chartPanelClass" xmlns:fx="http://javafx.com/fxml/1" minWidth="0">
<stylesheets>
<URL value="@chartpanel.css"/>
</stylesheets>
<clip>
<Rectangle width="${chartPanel.width}" height="${chartPanel.height}"/>
</clip>
</AnchorPane>