JavaFX MVC-模型在设置值后重置值/模型未保留值
在我的程序中,我想从滑块更新我的模型,它是这样做的JavaFX MVC-模型在设置值后重置值/模型未保留值,java,javafx,model-view-controller,Java,Javafx,Model View Controller,在我的程序中,我想从滑块更新我的模型,它是这样做的 public class Controller implements Initializable { @FXML private Model model = new Model(); @FXML public void editDone() throws Exception { model.setStarterCash((int)cashSlider.getValue()); m
public class Controller implements Initializable {
@FXML
private Model model = new Model();
@FXML
public void editDone() throws Exception {
model.setStarterCash((int)cashSlider.getValue());
model.setNumAction((int)acSlider.getValue());
model.setNumSalary((int)scSlider.getValue());
model.setNumCareer((int)ccSlider.getValue());
Stage doneStage = (Stage)editSave.getScene().getWindow();
Parent doneView = FXMLLoader.load(getClass().getResource("View/editMenu.fxml"));
Scene doneScene = new Scene(doneView);
doneStage.setScene(doneScene);
doneStage.show();
System.out.println("Starter cash set to: " + model.getStarterCash());
System.out.println("Action Deck amount set to: " + model.getNumAction());
System.out.println("Salary Deck amount set to: " + model.getNumSalary());
System.out.println("Career Deck amount set to: " + model.getNumCareer());
}
}
将其打印到控制台
Starter cash set to: 350000
Action Deck amount set to: 75
Salary Deck amount set to: 20
Career Deck amount set to: 11
但是,当场景发生变化时,我尝试检查我的值在另一个场景中是否仍然相同(使用getter),它会重置/显示0。我是否正确地更新了模型
更新
这是模型类。该模型包含来自“选项”场景的数据的setter和getter,但当我尝试访问我在不同场景(如“开始游戏”场景)中从所述场景设置的值时,它输出0
package Model;
public class Model {
private Board b;
private int starterCash;
private int numAction;
private int numSalary;
private int numCareer;
private int numPlayers;
public Model () {
b = new Board();
}
public int getStarterCash() {
return starterCash;
}
public int getNumAction() {
return numAction;
}
public int getNumCareer() {
return numCareer;
}
public int getNumSalary() {
return numSalary;
}
public int getNumPlayers() {
return numPlayers;
}
public void setNumPlayers(int numPlayers) {
this.numPlayers = numPlayers;
}
public void setStarterCash(int starterCash) {
this.starterCash = starterCash;
}
public void setNumAction(int numAction) {
this.numAction = numAction;
}
public void setNumCareer(int numCareer) {
this.numCareer = numCareer;
}
public void setNumSalary(int numSalary) {
this.numSalary = numSalary;
}
public Board getB() {
return b;
}
如果需要,这里是应用程序启动的主类
package View;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("mainMenu.fxml"));
primaryStage.setTitle("That's Life!");
primaryStage.setScene(new Scene(root, 1024, 576));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
什么是
型号
?如何申报?它是如何初始化的?--在另一个场景中?每个场景是否都有各自不同的模型实例
?我更新了我的问题:)希望有帮助!另外,我在Controller中只实例化了一次模型类。这是否回答了您的问题?每次创建新的控制器实例时,都会创建一个新的模型实例。因此,如果重新加载FXML,就会得到一个新模型。