簡體   English   中英

JavaFX fxml 加載器無法正常工作

[英]JavaFX fxml loader does not work properly

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);
    }
}

測試.fxml:

<?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>

當我運行 testFX.java 時,系統打印:

after set location  
Error

這是教授的代碼,我似乎無法運行它。 我意識到主要問題在於代碼行AnchorPane root = (AnchorPane)loader.load(); 但我不知道如何解決這個問題,有人可以幫忙嗎?

fx:controller屬性很可能是錯誤的(除非您的控制器類與發布的控制器類不同)

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

fxml 中的屬性值: view.testFXController != testFX.view.testFXController

假設沒有其他錯誤不能用問題中的信息重現,修復屬性值應該可以工作。

fxml 文件中的fx:controller屬性是這里的罪魁禍首。

fx:controller="application.Controller"為我工作。

因此, fx:controller="testFX.view.testFXController"應該適合您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM