Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX参数传递_Java_Javafx_Javafx 2_Parameter Passing_Fxml - Fatal编程技术网

JavaFX参数传递

JavaFX参数传递,java,javafx,javafx-2,parameter-passing,fxml,Java,Javafx,Javafx 2,Parameter Passing,Fxml,我一直在为这段代码苦苦挣扎,我试图将两个字符串的值发送到另一个“窗口”来对它们执行一个函数,但我不断收到各种各样的错误 我已经彻底阅读了这篇文章,它的主要问题是第10行中的(窗格)投射 而且,我已经读过了,答案和代码都很混乱 我真正想做的是: 我有一个主文档,我试图将它的一个值发送给它的子文档: 对于主控制器,我的代码如下所示: @FXML void initialize() throws MalformedURLException { parameterSender.setOnActio

我一直在为这段代码苦苦挣扎,我试图将两个字符串的值发送到另一个“窗口”来对它们执行一个函数,但我不断收到各种各样的错误

我已经彻底阅读了这篇文章,它的主要问题是第10行中的(窗格)投射

而且,我已经读过了,答案和代码都很混乱

我真正想做的是:

我有一个主文档,我试图将它的一个值发送给它的子文档:

对于主控制器,我的代码如下所示:

@FXML
void initialize() throws MalformedURLException
{
   parameterSender.setOnAction(new EventHandler<ActionEvent>()
    {
        @Override
        public void handle(ActionEvent event)
        {
            Parent root;
            try
            {
                root = FXMLLoader.load(getClass().getClassLoader().getResource("filetree/childWindow.fxml"),resources);
                Stage stage = new Stage();
                stage.setTitle("Child");
                stage.setScene(new Scene(root, 500, 500));
                FXMLLoader loader = FXMLLoader(getClass().getClassLoader().getResource("filetree/childWindow.fxml"), resources); //I fixed this, thank you very much, Uchiha Itachi
                childWindowController controller = loader.<childWindowController>getController();
                controller.firstParameter = getFirstField(); //this is the getter of the firstTextAreaField
                controller.secondParameter = getSecondField();//this is the getter of the secondTextAreaField
                stage.show();
                } catch (IOException e)
            {
                e.printStackTrace();
            }//End of Catch
}//End of Initialize
@FXML
void testAcquiredParametersFromParent(MouseEvent event)
{
    System.out.println(firstParameter + " " + secondParameter);
}
运行此代码时,在运行时会出现以下异常:

java.lang.ClassCastException: javafx.scene.layout.AnchorPane cannot be cast to javafx.fxml.FXMLLoader
at filetree.FXMLDocumentController$5.handle(FXMLDocumentController.java:17)
at filetree.FXMLDocumentController$5.handle(FXMLDocumentController.java:3)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:28)
at javafx.event.Event.fireEvent(Event.java:171)
at javafx.scene.Node.fireEvent(Node.java:6867)
at javafx.scene.control.Button.fire(Button.java:179)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:193)
at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:336)
at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:329)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:64)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
at javafx.event.Event.fireEvent(Event.java:171)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3311)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3151)
at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3106)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1563)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2248)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:250)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:173)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:292)
at com.sun.glass.ui.View.handleMouseEvent(View.java:530)
at com.sun.glass.ui.View.notifyMouse(View.java:924)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:17)
at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:67)
at java.lang.Thread.run(Thread.java:744)
任何帮助都将不胜感激

先谢谢你


编辑\修复加载程序。再次感谢Uchiha Itachi。

您的错误基本上是因为下面的一行

FXMLLoader loader = FXMLLoader.load(getClass().getClassLoader().
                              getResource("filetree/childWindow.fxml"), resources);
在这里,您试图创建FXMLLoader引用,但使用了
FXMLLoader
load()

FXMLLoader的
load()
将加载用作FXML中的根的窗格。因此,与其使用

FXMLLoader.load()
你必须直接使用

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getClassLoader().
                              getResource("filetree/childWindow.fxml"), resources);

只需按照您引用的线程中的第一个示例的相同方式执行即可。您的代码与该代码非常不同。