Как я могу заменить JavaFX GridPane другим? Я пытаюсь получить ошибку дублирования - PullRequest
0 голосов
/ 07 марта 2019

Допустим, у меня есть два из GridPane и строка меню вверху

// buttons
buttonLaunchOne = new Button("one");
buttonLaunchTwo = new Button("two")

// menu
GridPane menuLayout = new GridPane();
menuLayout.setMinSize(500, 500 );
menuLayout.setAlignment(Pos.TOP_CENTER);
menuLayout.add(buttonLaunchOne, 0, 0);
menuLayout.add(buttonLaunchTwo, 2, 0);

// one
GridPane twoLayout = new GridPane();
resultsLayout.add(buttonOne, 1, 1);

// two
GridPane oneLayout = new GridPane();
profileLayout.add(buttonTwo, 0, 1);

Тогда у меня есть два события действия

buttonLaunchOne.setOnAction(e -> {
    menuLayout.add(firstLayout, 0, 1);
    mainWindow.setTitle("Admin Portal: One");
});
buttonLaunchTwo.setOnAction(e -> {
     menuLayout.add(secondLayout, 0, 1);
     mainWindow.setTitle("Admin Portal: Two");
});

вот ошибка

Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Children: duplicate children added: parent = Grid hgap=0.0, vgap=0.0, alignment=TOP_CENTER
                                    at javafx.scene.Parent$2.onProposedChange(Parent.java:454)
                                    at com.sun.javafx.collections.VetoableListDecorator.add(VetoableListDecorator.java:206)
                                    at javafx.scene.layout.GridPane.add(GridPane.java:965)
                                    at sample.Main.lambda$start$1(Main.java:67)
                                    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
                                    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
                                    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
                                    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
                                    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
                                    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
                                    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
                                    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
                                    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
                                    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
                                    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
                                    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
                                    at javafx.event.Event.fireEvent(Event.java:198)
                                    at javafx.scene.Node.fireEvent(Node.java:8411)
                                    at javafx.scene.control.Button.fire(Button.java:185)
                                    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
                                    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
                                    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
                                    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
                                    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
                                    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
                                    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
                                    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
                                    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
                                    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
                                    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
                                    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
                                    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
                                    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
                                    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
                                    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
                                    at javafx.event.Event.fireEvent(Event.java:198)
                                    at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
                                    at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
                                    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
                                    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
                                    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:394)
                                    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
                                    at java.security.AccessController.doPrivileged(Native Method)
                                    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$353(GlassViewEventHandler.java:432)
                                    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
                                    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:431)
                                    at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
                                    at com.sun.glass.ui.View.notifyMouse(View.java:937)
                                    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
                                    at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
                                    at java.lang.Thread.run(Thread.java:748)

Я пробовал это с оператором удаления перед добавлением макетов и все еще получаю ошибку.Я просто хочу заменить, где один макет с другим, когда нажата кнопка.Я не уверен, что то, что я хочу сделать, действительно возможно, мне просто нужно понимание.Спасибо, и если вам нужно больше кода, который я только что попросил, и я сделаю это!Спасибо!

...