Как связать написанные мной классы с классом контроллера FXML - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь создать программу, которая будет читать список фильмов из текстового файла и отображать их в textArea, но всякий раз, когда я вызываю функцию toString (), чтобы установить текст в textArea для списка фильмовничего не появляетсяЯ создаю свой MovieCatalog в нужном месте?Есть ли лучший способ сделать это?У меня есть класс Main и класс Controller для моего документа fxml, который я создаю с помощью компоновщика сцены.Мои классы фильмов находятся в пакете "movies", который импортируется в мой контроллер.

Я создал классы для фильмов и каталог фильмов и проверил их функциональность в файле тестера, так что я знаюпроблема не с этим кодом.Мой графический интерфейс также отлично работает, если я использую простые операторы печати вместо toString ().

MainWindowController.java

package application;

import movies.*;

import javafx.fxml.FXML;
import javafx.scene.control.*;

public class MainWindowController
{
    //Views
    @FXML TextArea movieListArea;

    private Main main;
    private MovieCatalog movieList = new MovieCatalog();

    public void setMain(Main main)
    {
        this.main = main;
        movieList.initializeMovieList("Movies.txt");
    }

    public void shuffleButton()
    {
        movieListArea.setText(movieList.toString());
    }
}

Main.java

package application;

import java.io.IOException;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.*;

public class Main extends Application
{
    private Stage mainStage;

    @Override
    public void start(Stage mainStage)
    {
        this.mainStage = mainStage;
        mainWindow();
    }

    public void mainWindow()
    {
        try
        {
            FXMLLoader loader = new FXMLLoader(Main.class.getResource("MainWindowView.fxml"));
            AnchorPane pane = loader.load();

            MainWindowController mainWindowController = loader.getController();
            mainWindowController.setMain(this);

            Scene scene = new Scene(pane);

            mainStage.setScene(scene);
            mainStage.setTitle("Movie Program");
            mainStage.show();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

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

Если язамените movieListArea.setText(movieList.toString()); на movieListArea.setText("Hi");, тогда "Hi" выдаст отлично.Я предполагаю, что что-то не так с инициализацией моего каталога.Однако я не уверен, почему, поскольку код отлично работает, когда я запускаю простую тестовую программу в окне cmd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...