MVC模式帮助!JAVA
我是开发GUI和使用MVC模式的新手。我在确定如何最好地创建控制器时遇到了一些问题 到目前为止,我有一个名为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
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向导 所以检查一下这个样本:)别忘了使用;类以大写字母开头,方法和包文件夹以小写字母开头。这是否回答了您的问题?