我正在尝试在JavaFX中动态创建GridPane视图。问题是当试图将孩子添加到窗格时,我得到了一个重复的孩子"异常。
以下是我如何将子项添加到窗格中:
GridPane gridView = new GridPane();
for(int i = 0; i < mobster.getActions().size(); i++) {
MobsterVisualWrapper actionWrapper = new MobsterVisualWrapper(mobster.getActionList().get(i));
gridView.add(actionWrapper.getNode(), 0, i);
gridView.add(actionWrapper.getLabel(), 1, i);
}
Platform.runLater(() -> {
queuedActionsBorderPane.setCenter(gridView);
});
public static class MobsterVisualWrapper{
private final Label actionLabel;
private final ProgressBar progressBar = new ProgressBar(-1.0f);
private final ImageView imageView = new ImageView();
private Node node;
public MobsterVisualWrapper(AbstractAction action) {
actionLabel = new Label(action.getName());
actionLabel.setDisable(true);
node = new Label("-");
action.setVisualWrapper(this);
}
public void setRunning(boolean running) {
if(running) {
setNode(progressBar);
} else {
setNode(new ImageView());
}
}
public void setFailed() {
imageView.setId("actionViewFailed");
setNode(imageView);
}
public void setComplete() {
imageView.setId("actionViewComplete");
setNode(imageView);
}
/**
* Sets the node that will show the current status of the action
* @param node the node to show the status
*/
private void setNode(Node node) {
this.node = node;
}
/**
* @return the node to show the status of the action
*/
private Node getNode() {
return node;
}
public Label getLabel() {
return actionLabel;
}
}
我正在尝试使用两列添加每个循环迭代的新行。
感谢先进的任何帮助!
答案 0 :(得分:0)
此代码实际上可以正常工作,不再抛出异常。我想在我设置GridPane.setConstraints以及可能导致一些问题的add方法之前。我认为这个问题仍然存在,尽管取消了这个但我认为情况并非如此。感谢所有试图提供帮助的人。