为什么我添加到ObservableList的项目只能从它们声明的函数中访问

时间:2016-06-26 22:26:40

标签: java javafx

上下文

我刚开始学习JavaFX,所以我正在开发一个程序来发现它。我正在使用的程序需要一个数组,所以我使用了ObservableList。但问题是,我添加到列表中的项目只能从函数本身访问。

情况如下:

package fr.cartes;

import fr.cartes.model.MapModel;
import fr.cartes.view.ListMapsController;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;
import java.util.ArrayList;

public class MainApp extends Application {

    private Stage primaryStage;

    private ObservableList<MapModel> maps = FXCollections.observableArrayList();

    public static void main(String[] args){
        launch(args);
    }

    public void start(Stage primaryStage) throws Exception {
        this.primaryStage = primaryStage;
        this.primaryStage.setTitle("/!\\ Explorateur /!\\");
        this.primaryStage.setAlwaysOnTop(true);

        initializationOfProgram();
    }

    public void initializationOfProgram(){
        initializeListMaps();

        maps.add(new MapModel("Les Etats-Unis d'Amérique", "EU.jpg"));
        maps.add(new MapModel("La France d'aujourdh'ui", "FR.jpg"));

        for(MapModel mapModel : maps){
          System.out.println(mapModel.getMapName());
        }

    }

    public void initializeListMaps(){
        for(MapModel map : maps){
            System.out.println(map.getMapName());
        }
        try {
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(MainApp.class.getResource("view/ListMaps.fxml"));
            Scene scene = new Scene(loader.load());
            primaryStage.setScene(scene);
            primaryStage.show();
            ListMapsController controller = new ListMapsController();
            controller.setMainApp(this);
            controller.loadMapsOnListView(maps);
        }catch(IOException exception){exception.printStackTrace();}
    }

    public ObservableList<MapModel> getMapsLists(){
        return maps;
    }
}

例如,如果我在 initializationOfProgram()中放置 println()测试,我将“Les Etats-Unisd'Amérique”< / em>和“La France d'aujourd'hui”写在控制台上,但如果我这样做 println()测试 initializeListMaps(),它不会显示任何内容。 我错过了一些明显的东西吗?你能救我吗?

0 个答案:

没有答案