如何在JavaFX场景构建器中合并单元格?

Art*_*kov 13 javafx javafx-2 scenebuilder

我有一个看起来像KeyBoard的gridpane,我需要合并一些单元格来放置一个"Space"按钮..但是我无法在gridpane的设置中找到任何可以解决我的问题的选项..有没有人知道如何我能实现吗?

jew*_*sea 25

使用其中的项目设置Grid

  1. 创建一个GridPane.
  2. 将节点放在网格中.
  3. 在网格中选择一个节点.

在此阶段选择网格中的节点非常非常重要...

之后:

A.使用菜单项

  1. 选择 Modify | GridPane
  2. 选择任何一个

    Increase Row Span
    Decrease Row Span
    Increase Column Span
    Decrease Column Span
    
    Run Code Online (Sandbox Code Playgroud)

B.使用布局面板

  1. 修改行跨度或列跨度值.

布局说明

要真正得到一些东西来填充网格并按照您想要的方式跨越行或列,您可能需要修改节点的其他布局参数或布局面板中的网格约束.例如,Button通常不会超出其首选大小,因此将其最大高度和宽度设置为MAX_VALUE.另一个例子是让Label以两列为中心,将其Hgrow设置为ALWAYS,将Halignment设置为CENTER.

示例截图

有用于设置行和列跨度的菜单项,并且最右侧还有相同的布局文本字段.不幸的是,StackOverflow压缩了图片,使它有点模糊.

网格视图

样本FXML

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

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

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2">
  <children>
    <GridPane layoutX="116.0" layoutY="155.0">
      <children>
        <Button maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" text="Button" GridPane.columnIndex="0" GridPane.columnSpan="2147483647" GridPane.hgrow="ALWAYS" GridPane.rowIndex="1" GridPane.vgrow="ALWAYS" />
        <Label text="Label" GridPane.columnIndex="0" GridPane.rowIndex="0" />
        <Label maxWidth="-1.0" text="Label" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.halignment="CENTER" GridPane.hgrow="ALWAYS" GridPane.rowIndex="0" />
        <Label text="Label" GridPane.columnIndex="0" GridPane.rowIndex="2" />
        <Label text="Label" GridPane.columnIndex="1" GridPane.rowIndex="2" GridPane.rowSpan="2" />
        <Label text="Label" GridPane.columnIndex="2" GridPane.rowIndex="2" />
        <Label text="Label" GridPane.columnIndex="2" GridPane.rowIndex="3" />
      </children>
      <columnConstraints>
        <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
        <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
        <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
      </columnConstraints>
      <rowConstraints>
        <RowConstraints maxHeight="30.0" minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        <RowConstraints maxHeight="30.0" minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        <RowConstraints maxHeight="30.0" minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        <RowConstraints maxHeight="30.0" minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
      </rowConstraints>
    </GridPane>
  </children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)