如何将我编写的类连接到FXML Controller类

时间:2018-12-23 23:51:21

标签: java javafx

我正在尝试创建一个程序,该程序将从文本文件中读取电影列表并将其显示在textArea中,但是每当我调用toString()函数将textArea中的文本设置为电影列表时, ,没有任何显示。我在正确的位置创建MovieCatalog吗?有没有更好的方法来解决这个问题? 我使用场景生成器创建的fxml文档有一个Main类和一个Controller类。我的电影课在控制器中导入的“电影”包中。

我已经创建了电影的类和电影目录,并在测试器文件中测试了它们的功能,所以我知道问题不在于该代码。如果我使用简单的打印语句代替toString(),我的GUI也可以完美地工作。

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窗口中运行一个简单的测试程序时,代码可以完美运行。

0 个答案:

没有答案