创建GridPane子项时出错

时间:2017-05-26 15:12:07

标签: java javafx

我正在尝试在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;
        }
    }

我正在尝试使用两列添加每个循环迭代的新行。

感谢先进的任何帮助!

1 个答案:

答案 0 :(得分:0)

此代码实际上可以正常工作,不再抛出异常。我想在我设置GridPane.setConstraints以及可能导致一些问题的add方法之前。我认为这个问题仍然存在,尽管取消了这个但我认为情况并非如此。感谢所有试图提供帮助的人。