Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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 fxml加载程序无法正常工作_Java_Model View Controller_Javafx_Loader - Fatal编程技术网

JavaFX fxml加载程序无法正常工作

JavaFX fxml加载程序无法正常工作,java,model-view-controller,javafx,loader,Java,Model View Controller,Javafx,Loader,testFX.java: public class testFX extends Application { @Override public void start(Stage primaryStage) throws Exception { try{ FXMLLoader loader = new FXMLLoader(); loader.setLocation(getClass().getResource("/t

testFX.java:

public class testFX extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        try{
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(getClass().getResource("/testFX/view/test.fxml"));
            System.out.println("after set location");
            //PROBLEM
            AnchorPane root = (AnchorPane)loader.load();
            System.out.println("Does not happen");
            testFXController listController = loader.getController();
            listController.start();
            Scene scene = new Scene(root, 200, 300);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        }
        catch (Exception ex){
            System.out.println("Error");
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
} 
testFXController.java:

package testFX.view;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.ListView;

public class testFXController {
    @FXML ListView<String> listView;
    private ObservableList<String> obsList;

    public void start() {
        // create an ObservableList
        // from an ArrayList
        obsList = FXCollections.observableArrayList("Giants", "Patriots", "Jaguars");
        listView.setItems(obsList);
    }
}

这是教授的代码,我似乎无法让它运行。我意识到主要问题在代码
AnchorPane root=(AnchorPane)loader.load()行中
但是我不知道如何解决这个问题,有人能帮忙吗?

fx:controller
属性很可能是错误的(除非您的controller类与发布的不同)

要使用的控制器:
testFX.view.testFXController

fxml:
视图中的属性值。testFXController
!=<代码>testFX.view.testFX控制器


假设没有其他无法使用问题中的信息复制的错误,则修复属性值应该有效。

fxml文件中的
fx:controller
属性是罪魁祸首

fx:controller=“application.controller”
为我工作


因此,
fx:controller=“testFX.view.testFXController”
应该适合您。

显示整个堆栈跟踪,而不是打印消息“Error”,请替换
System.out.println(“Error”)e.printStackTrace()
对>进行编码。然后再次运行程序并告诉我们输出。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.control.ListView?>
<AnchorPane xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1"
    fx:controller="view.testFXController">
    <ListView fx:id="listView" 
        AnchorPane.topAnchor="10"
        AnchorPane.leftAnchor="10" 
        AnchorPane.rightAnchor="10"
        AnchorPane.bottomAnchor="10" />
</AnchorPane>
after set location  
Error