Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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场景中的NullPointerException_Javafx_Fxml_Scene_Scenebuilder - Fatal编程技术网

更改javaFX场景中的NullPointerException

更改javaFX场景中的NullPointerException,javafx,fxml,scene,scenebuilder,Javafx,Fxml,Scene,Scenebuilder,我的javaFx项目中有两个场景。。第一个Language.fxml有一个按钮,单击该按钮可将场景更改为allDevices.fxml。。但是它抛出NullPointerException说“位置是必需的”,尽管两个fxml文件在同一路径中 这是我的LanguageController.java package astrolabe; import java.net.URL; import java.util.ResourceBundle; import javafx.event.Action

我的javaFx项目中有两个场景。。第一个
Language.fxml
有一个按钮,单击该按钮可将场景更改为
allDevices.fxml
。。但是它抛出
NullPointerException
说“位置是必需的”,尽管两个fxml文件在同一路径中

这是我的
LanguageController.java

package astrolabe;

import java.net.URL;
import java.util.ResourceBundle;

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;

/**
 *
 * @author Ahmed Fawzy
 */
public class LanguageController implements Initializable {

    @FXML
    private Button arabic ;


    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
        arabic.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                // TODO Auto-generated method stub

                try{
                    Node node=(Node) event.getSource();
                    Stage stage=(Stage) node.getScene().getWindow();
                    Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("allDevices.fxml"));/* Exception */
                    Scene scene = new Scene(root);
                    stage.setScene(scene);
                    stage.show();
                }
                catch(Exception ex)
                {
                    ex.printStackTrace();
                }

            }
        });


    }
package等高仪;
导入java.net.URL;
导入java.util.ResourceBundle;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.fxml.fxml;
导入javafx.fxml.fxmloader;
导入javafx.fxml.Initializable;
导入javafx.scene.Node;
导入javafx.scene.Parent;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.stage.stage;
/**
*
*@作者艾哈迈德·法齐
*/
公共类LanguageController实现可初始化{
@FXML
专用按钮阿拉伯语;
@凌驾
公共void初始化(URL、ResourceBundle rb){
//待办事项
arabic.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
//TODO自动生成的方法存根
试一试{
Node Node=(Node)event.getSource();
Stage Stage=(Stage)node.getScene().getWindow();
父根=fxmloader.load(getClass().getClassLoader().getResource(“allDevices.fxml”));/*异常*/
场景=新场景(根);
舞台场景;
stage.show();
}
捕获(例外情况除外)
{
例如printStackTrace();
}
}
});
}

通过在fxml文件名之前添加包名来解决问题!

记录您使用
System.out.println(getClass().getResource(“allDevices.fxml”).toExternalForm();
获得的URL,以查看它是否给了您所期望的。@James\D在添加
System.out.println(getClass().getResource(“allDevices.fxml”)时.toExternalForm());‌​它给了我一个语法错误!!输入:似乎复制和粘贴在某种程度上包含了一些不可见的字符,使解析器感到困惑。@James\u D
文件:/D:/museum/Astrolabe/build/classes/Astrolabe/allDevices.fxml