在Gridpane中插入一行
问题描述:
我试图在网格窗格中插入一行。
我该如何做到这一点?
延伸阅读/信息/ effots:在Gridpane中插入一行
我已经能够将该行与此附加:
add.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Peak thisPeak = new Peak();
MenuPeak dispPeak = new MenuPeak(thisPeak);
int row = 1+thisPeak.peakCount();
//psMenu.addRow(1+row);
psMenu.add(dispPeak.name,1,row,1,1);
psMenu.add(dispPeak.retTime,2,row,1,1);
psMenu.add(dispPeak.tol,3,row,1,1);
}
});
从
把我原来的菜单布局到
我试过谷歌搜索,有人建议使用addRow。我试过几个变体(目前一个在我公司提供的片断注释掉
这最终只是覆盖我的按钮,如图:
我想最终它插入按钮本身(硬编码的峰线)之间行:
也许有一个更好的解决方案,但我发现了一些成功通过重新添加元素按钮再次,但这是产生一些运行时错误,但仍在工作?
add.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Peak thisPeak = new Peak();
MenuPeak dispPeak = new MenuPeak(thisPeak);
int row = thisPeak.peakCount();
psMenu.addRow(1+row);
psMenu.add(dispPeak.name,1,row,1,1);
psMenu.add(dispPeak.retTime,2,row,1,1);
psMenu.add(dispPeak.tol,3,row,1,1);
row++;
psMenu.add(save,1,row,1,1);
psMenu.add(cancel,2,row,1,1);
psMenu.add(okay,3,row,1,1);
}
});
这的确让这个
但同样,运行时错误有关添加重复的孩子抱怨。
异常在线程 “的JavaFX应用程序线程” java.lang.IllegalArgumentExcepti上:儿童:儿童重复添加 :父=电网hgap指定= 10.0,vgap = 10.0,ALIG市民明白= TOP_CENTER 在javafx.scene。家长$ 2.onProposedChange(Parent.java:454) 在com.sun.javafx.collections.VetoableListDecorator.add(VetoableListDeco rator.java:206)
编辑:答案是正确的,准确的实施我的更正是:
add.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Peak thisPeak = new Peak();
MenuPeak dispPeak = new MenuPeak(thisPeak);
int row = 1+thisPeak.peakCount();
psMenu.setRowIndex(save,row);
psMenu.setRowIndex(cancel,row);
psMenu.setRowIndex(okay,row);
psMenu.addRow(row-1, dispPeak.name, dispPeak.retTime, dispPeak.tol);
}
});
答
即将添加保存,取消和确定按钮,尽管它们已经是GridPane
的子项。相反,只需调整这些孩子的排。另外addRow
将节点添加到一行中。它不会“插入”一个新行。如果你没有通过任一节点的可变参数的参数,该方法只是什么也不做(如果你开始Node
S上的高峰中的第一列,你可以使用例如psMenu.addRow(row, dispPeak.name, dispPeak.retTime, dispPeak.tol);
):
@Override
public void handle(ActionEvent event) {
Peak thisPeak = new Peak();
MenuPeak dispPeak = new MenuPeak(thisPeak);
int row = thisPeak.peakCount();
// add new nodes
psMenu.add(dispPeak.name,1,row);
psMenu.add(dispPeak.retTime,2,row);
psMenu.add(dispPeak.tol,3,row);
row++;
// adjust row of buttons
GridPane.setRowIndex(save, row);
GridPane.setRowIndex(cancel, row);
GridPane.setRowIndex(okay, row);
}
哇!我只是想到了这一点。我接受这个答案!谢谢!我当时玩的很多。通过在添加新项目之前设置行索引,我发现我的行为更好,只是FYI。我正在使用addrow添加我的新峰值,并且它在该行中的按钮之后插入 – Chemistpp