当前位置: 首页 > 知识库问答 >
问题:

JavaFX:使用FXML在行中组织控件(在gridpane中)

章心水
2023-03-14
<GridPane>
   <Label GridPane.rowIndex="0" GridPane.columnIndex="0" text="field1"/>
   <TextField GridPane.rowIndex="0" GridPane.columnIndex="1"/>
   <Label GridPane.rowIndex="1" GridPane.columnIndex="0" text="field2"/>
   <TextField GridPane.rowIndex="1" GridPane.columnIndex="1"/>
</GridPane>
<GridPane>
   <GridPane.Row>
       <Label text="field1"/>
       <TextField/>
   </GridPane.Row>
   <GridPane.Row>
       <Label text="field2"/>
       <TextField/>
   </GridPane.Row>
</GridPane>

我确实知道VBox和HBox,这是我想要的,但我想有固定宽度的列元素。

共有1个答案

陈正业
2023-03-14

可以使用对象跟踪rowindex

Java:

public class RowCounter {
    private int currentRowIndex = 0;

    /**
     * Return current rowIndex.
     * @return
     */
    public int getCr() {
        return currentRowIndex;
    }

    /**
     * Return current rowIndex and increase it.
     * @return
     */
    public int getNr() {
        return currentRowIndex++;
    }
}

FXML:

<GridPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
    <fx:define>
        <RowCounter fx:id="rc" />
    </fx:define>

    <children>
        <Label text="Name:" GridPane.columnIndex="0" GridPane.rowIndex="$rc.cr" />
        <TextField GridPane.columnIndex="1" GridPane.rowIndex="$rc.nr" />

        <Label text="Age:" GridPane.columnIndex="0" GridPane.rowIndex="$rc.cr" />
        <TextField GridPane.columnIndex="1" GridPane.rowIndex="$rc.nr" />

        <Label text="Address:" GridPane.columnIndex="0" GridPane.rowIndex="$rc.cr" />
        <TextField GridPane.columnIndex="1" GridPane.rowIndex="$rc.nr" />
    </children>
</GridPane>
 类似资料:
  • 实际上,我想使用Javafx中的标签创建一个导航列表。我可以为每个标签分配fx: id并在控制器类中创建标签。 但我想做的是,我想在控制器类中创建一个标签数组,而不是控制器类中的十个标签对象,这是我在场景生成器中创建的。 谁能帮我想个办法。。。

  • 我是JavaFx新手,我在FXMl中创建了两个gridPane,我想用JavaFx做同样的事情。 我想创建一个扩展GridPane的类,所以当我调用我的类时,我将得到与fxml PS中相同的结果:如果您使用的是SceneBuilder,请检查网格线是否可见,以便可以看到所有GridPane谢谢

  • 转换为fxml 我总是从javafx.fxml.loadException类型中得到错误代码:也许有比创建自定义类更好的解决方案。但我需要一个标签与自定义接口(连接)。也许另一个解决方案是创建一个只包含标签的fxml文件,并通过接口为此设置一个控制器类。 编辑:

  • 我一直试图使用FXML在JavaFX应用程序中显示我的图像,但没有成功。我的代码: 没有错误,但我的图像没有显示。我想图像已加载,但未显示。 这可能吗?我怎么查?如果是的话,不应该有一个错误给它吗? 事实上,即使我给出了一个不正确的名称,也没有运行时错误。也许没上子弹? 我也试过加载不同的图像和改变尺寸,没有任何效果。 ->运行时错误#1 ->林特错误+运行时错误#1 ->林特错误+运行时错误#1

  • 我是否正确地认为无法在网格窗格中拖动形状?下面是一些代码的链接,这些代码允许用户在屏幕上拖动形状:拖放形状 我希望我的形状具有与上述相同的行为,但我希望它们在GridPane中(最终我希望它们的移动被锁定到X或Y轴以移动到相邻的形状)。 我将以下代码添加到“start”方法中。它使用与示例代码相同的方法创建圆,而是将它们添加到网格中。令人惊讶的是,这消除了他们被拖来拖去的能力。 如果您想测试这一点