进一步阅读/信息/效果:
我已经能够用这个附加行:
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);
}
});
从
获取原始菜单布局到
我尝试使用Google搜索,有些人建议使用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);
}
});
这确实使这个
但同样,运行时错误主张添加重复的孩子。
线程中的异常&#34; JavaFX应用程序线程&#34; java.lang.IllegalArgumentExcepti on:Children:重复的孩子 添加:parent = Grid hgap = 10.0,vgap = 10.0,alig nment = TOP_CENTER 在javafx.scene.Parent $ 2.onProposedChange(Parent.java:454) at 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);
}
});
答案 0 :(得分:1)
您已添加了保存,取消和确定按钮,尽管它们已经是GridPane
的子项。而只是调整那些孩子的行。此外,addRow
将节点添加到行中。它没有&#34;插入&#34;一排新的。如果你没有将任何节点传递给varargs参数,那么该方法什么都不做(如果你在第一列中启动峰值的Node
,你可以使用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);
}