javafx вызывает метод класса из класса контроллера - PullRequest
0 голосов
/ 06 ноября 2018

Я работаю над Javafx проектом в формате Model View Controller. В настоящее время в модели у меня есть 3 класса: школьный класс, основной класс и ученический класс. В школьном классе есть список основных предметов, а в основном классе - список учащихся. Список студентов читается в majorName.txt файлах.

Представление организует и распечатывает списки специальностей и студентов в текстовые поля. Один из обязательных методов - это возможность сохранять любые изменения, сделанные в текстовых полях (так как при использовании приложения можно изменить имя, добавить имя, удалить имя и т. Д.) После нажатия кнопки сохранения. Контроллер не должен сохранять и обновлять файлы. Вместо этого он должен вызвать метод из школьного класса, чтобы сделать сохранение.

main.java

package application;

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


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            // Load the FXML document (we created with SceneBuilder)
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation( Main.class.getResource("../Main.fxml") );

            // Load the layout from the FXML and add it to the scene
            AnchorPane layout = (AnchorPane) loader.load();             
            Scene scene = new Scene( layout );

            // Set the scene to stage and show the stage to the user
            primaryStage.setScene(scene);
            primaryStage.show();

        } catch(Exception e) {
            e.printStackTrace();
        }
    }

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

School.Java

public class School {

    private String name;
    private ArrayList<Major> majors;

    public School(String name) {
        this.name = name;
        this.Major = new ArrayList<Major>();
    }

    public School loadData( ) {
    //reading .txt files to create instances of majors and students
    }

    public void Save( String houseName, String roster ) {
    //writing .txt files with changes from application textfields
    }

maincontroller.java

public class MainController implements EventHandler {
    @FXML private Text schoolName;
    @FXML private Text firstHouseName;    
    @FXML private Text firstHouseStudent; 
    //ect... LIST of all FXML nodes 

     public void initialize( URL location, ResourceBundle resources) {
        //Create the school instance and call School.loadData() reading data to create major and students.
        School OCC = new School( "OCC");
        OCC.loadData();

    public void handle(Event arg0) {
        // TODO Auto-generated method stub

        String rosterOne = firstMajorStudent.getText();
        String nameOne = firstMajorName.getText();
        //OCC Cannot be resolved
        OCC.save(nameOne, rosterOne);

Моя проблема связана с последней строкой кода, вызывающей метод Save from the school. Нужно ли передавать объект OCC методу handle?.

...