javaFX备忘录

一直用的是flex,目前flex转apache好像支持力度不够,看下javaFX,企业组件也完善了,决定尝试一下。遇到一个问题,记录一下,备忘:

1、自适应布局几乎是标准布局。javaFX中有点奇特;

1)它没有width=100%,height=100%属性。

2)UI layout组件有些是默认自适应的,就是自动按父组件的高宽设置了100%的高和宽,有些又不是。

3)对于没有自动100%的组件,如VBox,HBox的子组件,如果你把TableView组件包在VBox下,发现它不会在纵轴方向自动100%宽度,而高度会自动100%。需要在组件设置类似属性:GridPane.hgrow="ALWAYS" VBox.vgrow="ALWAYS",很怪诞。而且这个属性是依赖父组件而存在的。如果父组件有GridPane,就设置GridPane.hgrow="ALWAYS",有VBox就设置VBox.vgrow="ALWAYS"。

贴个完整正确的自适应布局代码:

<?xml version="1.0" encoding="UTF-8"?>
<BorderPane prefHeight="404.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <top>
      <MenuBar BorderPane.alignment="CENTER">
        <menus>
          <Menu mnemonicParsing="false" text="File">
            <items>
              <MenuItem mnemonicParsing="false" text="Close" />
            </items>
          </Menu>
          <Menu mnemonicParsing="false" text="Edit">
            <items>
              <MenuItem mnemonicParsing="false" text="Delete" />
            </items>
          </Menu>
          <Menu mnemonicParsing="false" text="Help">
            <items>
              <MenuItem mnemonicParsing="false" text="About" />
            </items>
          </Menu>
        </menus>
         <contextMenu>
            <ContextMenu>
              <items>
                <MenuItem mnemonicParsing="false" text="Unspecified Action" />
              </items>
            </ContextMenu>
         </contextMenu>
      </MenuBar>
   </top>
   <bottom>
      <HBox alignment="BOTTOM_LEFT" BorderPane.alignment="CENTER">
         <children>
            <Button mnemonicParsing="false" text="Button" />
            <Button mnemonicParsing="false" text="Button" />
         </children>
      </HBox>
   </bottom>
   <center>
      <SplitPane dividerPositions="0.5" orientation="VERTICAL">
         <items>
            <VBox GridPane.hgrow="ALWAYS" GridPane.vgrow="ALWAYS">
               <children>
                  <HBox maxHeight="-Infinity" prefWidth="598.0" GridPane.valignment="TOP" VBox.vgrow="ALWAYS">
                     <children>
                        <Label alignment="CENTER_RIGHT" layoutX="59.0" layoutY="4.0" prefHeight="25.0" prefWidth="99.0" text="Date" />
                        <TextField>
                           <HBox.margin>
                              <Insets left="10.0" />
                           </HBox.margin>
                        </TextField>
                        <Button alignment="BASELINE_LEFT" mnemonicParsing="false" text="search">
                           <HBox.margin>
                              <Insets left="10.0" />
                           </HBox.margin>
                        </Button>
                     </children>
                     <GridPane.margin>
                        <Insets top="10.0" />
                     </GridPane.margin>
                     <VBox.margin>
                        <Insets />
                     </VBox.margin>
                     <padding>
                        <Insets bottom="5.0" top="5.0" />
                     </padding>
                  </HBox>
                  <TableView prefWidth="200.0" GridPane.hgrow="ALWAYS" VBox.vgrow="ALWAYS">
                    <columns>
                      <TableColumn prefWidth="75.0" text="C1" />
                      <TableColumn prefWidth="75.0" text="C2" />
                    </columns>
                     <GridPane.margin>
                        <Insets top="40.0" />
                     </GridPane.margin>
                  </TableView>
               </children>
            </VBox>
            <TableView prefHeight="200.0" prefWidth="200.0">
              <columns>
                <TableColumn prefWidth="75.0" text="C1" />
                <TableColumn prefWidth="75.0" text="C2" />
              </columns>
            </TableView>
         </items>
      </SplitPane>
   </center>
</BorderPane>


转载于:https://my.oschina.net/fir01/blog/401772

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值