MVC模式帮助!JAVA

MVC模式帮助!JAVA,java,javafx,model-view-controller,controller,Java,Javafx,Model View Controller,Controller,我是开发GUI和使用MVC模式的新手。我在确定如何最好地创建控制器时遇到了一些问题 到目前为止,我有一个名为TeamSelectionView.java的视图类,它包含以下内容: package View; import Model.*; import Controller.*; import java.util.ArrayList; import javafx.application.Application; import javafx.geometry.Insets; import jav

我是开发GUI和使用MVC模式的新手。我在确定如何最好地创建控制器时遇到了一些问题

到目前为止,我有一个名为
TeamSelectionView.java
的视图类,它包含以下内容:

package View;

import Model.*;
import Controller.*;
import java.util.ArrayList;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.*;
import javafx.scene.layout.GridPane;
import javafx.scene.text.*;
import javafx.stage.Stage;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;

public class TeamSelectionView extends Application {
 public void start(Stage primaryStage) {


        MainMenuView mv = new MainMenuView();
        Scene menuScene = mv.makeMenuScene();

        addCompanyView acv = new addCompanyView();
        Scene addCompanyScene = acv.makeAddCompanyScene();

        MainMenuButtonControllers mmbc = new MainMenuButtonControllers();

        mmbc.b1Action(primaryStage);



        primaryStage.setTitle("Show Grid Panel");
        primaryStage.setScene(menuScene);
        primaryStage.show();

}


这由
MainJavaFXView.java运行:

package View;

import javafx.application.Application;

public class MainJAVAFXView {
    public static void main(String[] args){
        Application.launch(TeamSelectionView.class, args);

    }
}
然后我有另外两个视图
MainMenuView

package View;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class MainMenuView{

        private Text header;
        private Button b1 = new Button("Add Company");
        private Button b2 = new Button("Add Project Owner");
        private Button b3 = new Button("Add Project");
        private Button b4 = new Button("Add Student Information");
        private Button b5 = new Button("Shortlist Projects");
        private Button b6 = new Button("Form Team");
        private GridPane menuPane = new GridPane();


        public Scene makeMenuScene(){

            header = new Text("Main Menu");

            menuPane.setVgap(5.5);
            menuPane.setHgap(5.5);
            menuPane.add(header, 36, 17);
            menuPane.add(b1, 36, 20);
            menuPane.add(b2, 36, 21);
            menuPane.add(b3, 36, 22);
            menuPane.add(b4, 36, 23);
            menuPane.add(b5, 36, 25);
            menuPane.add(b6, 36, 26);
    
            Scene menuScene = new Scene(menuPane);

            return menuScene;

            
        }

        public Button getB1() {
            return b1;
        }

       
    }


package View;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;

public class addCompanyView {
    
    public Scene makeAddCompanyScene(){
        //ADD COMPANY SCREEN
        GridPane addCompanyPane = new GridPane();
        addCompanyPane.setHgap(5.5);
        addCompanyPane.setVgap(5.5);

        Text cField1 = new Text("Company ID #:");
        Text cField1a = new Text("C");
        Text cField2 = new Text("Company Name:");
        Text cField3 = new Text("Company ABN:");
        Text cField4 = new Text("Company URL:");
        Text cField5 = new Text("Company Address:");

        GridPane fieldOnePane = new GridPane();

        TextField cTextField1 = new TextField();
        TextField cTextField2 = new TextField();
        TextField cTextField3 = new TextField();
        TextField cTextField4 = new TextField();
        TextField cTextField5 = new TextField();

        Button cSubmit = new Button("Submit");
        Button cBackToMenu = new Button("Back To Menu");
        Button cClear = new Button("Clear");

        Text cMessage = new Text();


        fieldOnePane.add(cField1a, 0, 0);
        fieldOnePane.add(cTextField1, 1 ,0);

        addCompanyPane.add(cField1, 0, 0);
        addCompanyPane.add(fieldOnePane, 0, 1);
        addCompanyPane.add(cField2, 0, 2);
        addCompanyPane.add(cTextField2, 0, 3);
        addCompanyPane.add(cField3, 0, 4);
        addCompanyPane.add(cTextField3, 0, 5);
        addCompanyPane.add(cField4, 0, 6);
        addCompanyPane.add(cTextField4, 0, 7);
        addCompanyPane.add(cField5, 0, 8);
        addCompanyPane.add(cTextField5, 0 ,9);
        addCompanyPane.add(cSubmit, 0, 10);
        addCompanyPane.add(cClear, 0, 11);
        addCompanyPane.add(cBackToMenu, 0 , 12);
        addCompanyPane.add(cMessage, 0, 13);

        Scene addCompanyScene = new Scene(addCompanyPane);

        return addCompanyScene;

    }


}
另一个视图称为
addCompanyView

package View;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class MainMenuView{

        private Text header;
        private Button b1 = new Button("Add Company");
        private Button b2 = new Button("Add Project Owner");
        private Button b3 = new Button("Add Project");
        private Button b4 = new Button("Add Student Information");
        private Button b5 = new Button("Shortlist Projects");
        private Button b6 = new Button("Form Team");
        private GridPane menuPane = new GridPane();


        public Scene makeMenuScene(){

            header = new Text("Main Menu");

            menuPane.setVgap(5.5);
            menuPane.setHgap(5.5);
            menuPane.add(header, 36, 17);
            menuPane.add(b1, 36, 20);
            menuPane.add(b2, 36, 21);
            menuPane.add(b3, 36, 22);
            menuPane.add(b4, 36, 23);
            menuPane.add(b5, 36, 25);
            menuPane.add(b6, 36, 26);
    
            Scene menuScene = new Scene(menuPane);

            return menuScene;

            
        }

        public Button getB1() {
            return b1;
        }

       
    }


package View;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;

public class addCompanyView {
    
    public Scene makeAddCompanyScene(){
        //ADD COMPANY SCREEN
        GridPane addCompanyPane = new GridPane();
        addCompanyPane.setHgap(5.5);
        addCompanyPane.setVgap(5.5);

        Text cField1 = new Text("Company ID #:");
        Text cField1a = new Text("C");
        Text cField2 = new Text("Company Name:");
        Text cField3 = new Text("Company ABN:");
        Text cField4 = new Text("Company URL:");
        Text cField5 = new Text("Company Address:");

        GridPane fieldOnePane = new GridPane();

        TextField cTextField1 = new TextField();
        TextField cTextField2 = new TextField();
        TextField cTextField3 = new TextField();
        TextField cTextField4 = new TextField();
        TextField cTextField5 = new TextField();

        Button cSubmit = new Button("Submit");
        Button cBackToMenu = new Button("Back To Menu");
        Button cClear = new Button("Clear");

        Text cMessage = new Text();


        fieldOnePane.add(cField1a, 0, 0);
        fieldOnePane.add(cTextField1, 1 ,0);

        addCompanyPane.add(cField1, 0, 0);
        addCompanyPane.add(fieldOnePane, 0, 1);
        addCompanyPane.add(cField2, 0, 2);
        addCompanyPane.add(cTextField2, 0, 3);
        addCompanyPane.add(cField3, 0, 4);
        addCompanyPane.add(cTextField3, 0, 5);
        addCompanyPane.add(cField4, 0, 6);
        addCompanyPane.add(cTextField4, 0, 7);
        addCompanyPane.add(cField5, 0, 8);
        addCompanyPane.add(cTextField5, 0 ,9);
        addCompanyPane.add(cSubmit, 0, 10);
        addCompanyPane.add(cClear, 0, 11);
        addCompanyPane.add(cBackToMenu, 0 , 12);
        addCompanyPane.add(cMessage, 0, 13);

        Scene addCompanyScene = new Scene(addCompanyPane);

        return addCompanyScene;

    }


}
因此,基本上我想创建一个控制器类,在该类中,单击
b1
按钮可以将场景从主菜单更改为
addCompanyScene
。我尝试了一些教程,但无法真正解决如何将它们显示的内容变形为适合我想做的内容。这是我到目前为止为controller类所做的,但它不起作用。它显示
main菜单视图
,但当我单击
b1时,它什么也不做。请帮帮我

package Controller;

import View.*;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;



import Model.*;


public class MainMenuButtonControllers{

    MainMenuView mv = new MainMenuView();
    addCompanyView acv = new addCompanyView();
    Scene addCompanyScene = acv.makeAddCompanyScene();
    Button b1 = mv.getB1();


    public void b1Action(Stage stage){
        b1.setOnAction(e -> stage.setScene(addCompanyScene));
    }

    
}


如果我遗漏了任何有助于你帮助我的信息,请告诉我!提前感谢JAVAFX向导

所以检查一下这个样本:)别忘了使用;类以大写字母开头,方法和包文件夹以小写字母开头。这是否回答了您的问题?