2013-08-16 89 views
2

由于某些原因,我的窗格:gas-pumps-header和coffee-house-header不会在窗口重新调整大小时拉伸。我使用的是JavaFX Scene Builder,而我是JavaFX的新手(如果答案很基本......)拉伸窗格重新调整大小的窗口

我希望窗格可以伸展到边(左和右),并填充整个窗户的宽度。

这里是我的FXML

<?xml version="1.0" encoding="UTF-8"?> 

<?import java.lang.*?> 
<?import java.net.*?> 
<?import java.util.*?> 
<?import javafx.geometry.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.scene.paint.*?> 
<?import javafx.scene.text.*?> 

<AnchorPane prefHeight="768.0" prefWidth="1024.0" xmlns:fx="http://javafx.com/fxml"> 
    <children> 
    <HBox id="action-buttons-section" alignment="CENTER_LEFT" layoutY="14.0" spacing="5.0" 

AnchorPane.leftAnchor="14.0"> 
     <children> 
     <Button mnemonicParsing="false" text="Add Customer" /> 
     <Button mnemonicParsing="false" text="Move Customer" /> 
     </children> 
    </HBox> 
    <HBox id="fuel-pool-section" alignment="CENTER_LEFT" layoutY="14.0" spacing="5.0" AnchorPane.rightAnchor="16.0"> 
     <children> 
     <Label text="Main Fuel Pool" /> 
     <ProgressBar prefHeight="20.0" prefWidth="200.0" progress="0.0" /> 
     <Button mnemonicParsing="false" text="Fill" /> 
     </children> 
    </HBox> 
    <VBox alignment="CENTER" spacing="10.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="44.0"> 
     <children> 
     <VBox alignment="CENTER" spacing="5.0"> 
      <children> 
      <Pane id="gas-pumps-header" prefHeight="100.0" prefWidth="996.0"> <!-- first one --> 
       <children> 
       <Label layoutX="14.0" layoutY="15.0" text="Gas Pumps"> 
        <font> 
        <Font name="System Bold" size="16.0" fx:id="x2" /> 
        </font> 
       </Label> 
       <HBox id="gas-pumps-income-section" alignment="CENTER_RIGHT" layoutX="893.0" layoutY="15.0" spacing="5.0"> 
        <children> 
        <Label text="Income"> 
         <font> 
         <Font size="14.0" fx:id="x1" /> 
         </font> 
        </Label> 
        <Label fx:id="gasPumpsIncomeValue" font="$x1" text="Value" /> 
        </children> 
       </HBox> 
       </children> 
      </Pane> 
      <HBox id="gas-pumps-section" prefHeight="378.0" prefWidth="996.0" styleClass="layout" VBox.vgrow="ALWAYS"> 
       <padding> 
       <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" fx:id="x3" /> 
       </padding> 
      </HBox> 
      </children> 
     </VBox> 
     <VBox alignment="CENTER" spacing="5.0"> 
      <children> 
      <Pane id="coffee-house-header" prefHeight="100.0" prefWidth="996.0"> <!-- second one --> 
       <children> 
       <Label font="$x2" layoutX="14.0" layoutY="15.0" text="Coffee House" /> 
       <HBox id="coffee-house-income-section" alignment="CENTER_RIGHT" layoutX="893.0" layoutY="15.0" spacing="5.0"> 
        <children> 
        <Label font="$x1" text="Income" /> 
        <Label fx:id="coffeeHouseIncomeValue" font="$x1" text="Value" /> 
        </children> 
       </HBox> 
       </children> 
      </Pane> 
      <HBox id="coffee-house-section" padding="$x3" prefHeight="378.0" prefWidth="996.0" styleClass="layout" VBox.vgrow="ALWAYS" /> 
      </children> 
     </VBox> 
     </children> 
    </VBox> 
    </children> 
    <stylesheets> 
    <URL value="@style.css" /> 
    </stylesheets> 
</AnchorPane> 
+0

你期望什么样的拉伸?例如,在多大程度上,拉伸最大尺寸时应该有最小尺寸?您可以编辑您的问题以添加更多信息。 – jewelsea

+0

@jewelsea你是对的。我编辑了这个问题。 –

回答

1

玩过不同种类的窗格后,我设法让它工作。

我使用了一个BorderPane,并将子节点添加到BorderPane的左侧和右侧。现在,当我重新调整窗口大小时,每个元素都会重新定位到起始布局中的相对位置。

这里是BorderPane部分

<BorderPane id="gas-pumps-header" VBox.vgrow="SOMETIMES"> 
    <left> 
     <Label text="Gas Pumps" BorderPane.alignment="CENTER_LEFT"> 
      <font> 
       <Font name="System Bold" size="16.0" fx:id="x2" /> 
      </font> 
     </Label> 
    </left> 
    <padding> 
     <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" fx:id="x3" /> 
    </padding> 
    <right> 
     <HBox id="gas-pumps-income-section" alignment="CENTER_RIGHT" spacing="5.0" BorderPane.alignment="CENTER_RIGHT"> 
      <children> 
       <Label text="Income"> 
        <font> 
         <Font size="14.0" fx:id="x1" /> 
        </font> 
       </Label> 
       <Label fx:id="gasPumpsIncomeValue" font="$x1" text="Value" /> 
      </children> 
     </HBox> 
    </right>    
</BorderPane> 
0

气体泵头已经作为应用程序窗口大小的变化自动调整。在SceneBuilder中打开你的fxml文件(我在win7上使用1.1-b28),点击SceneBuilder Hierarchy窗格中的gas-pumps-header窗格,将样式设置为-fx-border-color:red;选择SceneBuilder菜单项Preview |显示预览和窗口并调整预览窗口的大小,当您调整预览窗口大小时,将看到气泵头变化大小的红色边框。

我很确定上述内容对您没有任何帮助,因为您可能对布局有些问题,我无法从您的问题中理解。

一般来说,我会建议使用适当的窗格子类而不是窗格作为大多数布局,因为窗格子类将为您的布局工作做更多工作。也许在你的情况下,HBox会更合适。