访问JavaFX SceneBuilder应用程序中的字段

访问JavaFX SceneBuilder应用程序中的字段,java,javafx,scenebuilder,Java,Javafx,Scenebuilder,Intellij IDEA+Oracle JDK 14+JavaFX 14 我正在制作一个简单的JavaFX计算器风格的应用程序,并使用SceneBuilder 除了引用单个唯一的fx:id,还有更简单的方法来引用SceneBuilder构建的应用程序中的字段吗?例如,如果我有一个内置的UI SceneBuilder,其中包含一些数据行和数据列: --------------------- | field00 | field01 | | field10 | field11 | ---------

Intellij IDEA+Oracle JDK 14+JavaFX 14

我正在制作一个简单的JavaFX计算器风格的应用程序,并使用SceneBuilder

除了引用单个唯一的
fx:id
,还有更简单的方法来引用SceneBuilder构建的应用程序中的字段吗?例如,如果我有一个内置的UI SceneBuilder,其中包含一些数据行和数据列:

---------------------
| field00 | field01 |
| field10 | field11 |
---------------------
我想对数据做一些数学运算。除了引用静态名称之外,还有更简单的方法来引用字段吗

@FXML private TextField field00;
@FXML private TextField field01;
@FXML private TextField field10;
@FXML private TextField field11;
我在做一些非常简单的事情,比如:
如果field00不为null,如果field01不为null,那么…
。我创建了一个类来表示每一行,并将这些对象读入ArrayList,这使它变得更好了,但我创建这些对象的代码仍然很难看,比如:

RowList myRowList = new RowList();

MyRowClass aRow =
    new MyRowClass(
        Double.parseDouble(field00.getText()),
        Double.parseDouble(field01.getText()));
myRowList.addRow(aRow);

aRow =
    new Assignment(
        Double.parseDouble(field10.getText()),
        Double.parseDouble(field11.getText()));
myRowList.addRow(aRow);
我希望能够以某种方式遍历字段

另外,我想在UI中添加一个“AddaRow”按钮,并将该行包含在计算中,这将为混合引入一些非静态命名的字段


这里的解决方案是跳过SceneBuilder并直接在我的代码中创建UI吗?

如果将文本字段放在容器(如HBox)中,则可以在容器对象上使用
.getChildren()
方法来获取其所有子节点。然后,您可以像这样遍历所有这些对象:

HBox h = new HBox();
h.getChildren().add(new TextField());
h.getChildren().add(new TextField());
h.getChildren().add(new TextField());

// loop through each node in the HBox
for (Node n : h.getChildren())
{
    // if the Node is of type TextField, and the text inside is not null
    if (n instanceof TextField && ((TextField) n).getText() != null)
    {
        // do something
    }
}
getChildren()
在我的应用程序中的
GridPane
上是我所需要的,谢谢,但我认为这暴露了我的模型的一个弱点。我想一次处理一行表。我认为
GridPane
没有任何允许逐行处理的功能(除了手动检查行和列索引)。我最好使用一个hbox的“堆栈”,这样我可以迭代所有hbox/行,然后在每个hbox/行中进行迭代