因此,当我执行代码时,我没有遇到任何错误。 我在我的fxml中也有设置控制器,我在下面发布的代码是控制器和主类。因为我已经在上一篇文章中发布了fxml。
package realEstateApplication;
import javafx.application.Application;
//import javafx.fxml.FXMLLoader;
//import javafx.scene.Parent;
//import javafx.scene.Scene;
import javafx.stage.Stage;
import realEstateApplication.controllers.loginViewController;
public class Main extends Application {
public Main() {
System.out.println("Main invoked ... \n");
}
@Override
public void start(Stage primaryStage) throws Exception{
// Parent loginRoot = FXMLLoader.load(getClass().getResource("views/loginView.fxml"));
loginViewController loginMVC = new loginViewController();
// Parent login = FXMLLoader.load(getClass().getResource("views/loginView.fxml"));
/* Parent admin = FXMLLoader.load(getClass().getResource("views/adminView.fxml"));
Parent registerAdmin = FXMLLoader.load(getClass().getResource("views/registerAdminView.fxml"));
Parent registerCustomer = FXMLLoader.load(getClass().getResource("views/registerCustomerView.fxml"));
Parent registerCompany = FXMLLoader.load(getClass().getResource("views/registerCompanyView.fxml"));
Parent registerFlat = FXMLLoader.load(getClass().getResource("views/registerFlatView.fxml"));*/
// Stage firstStage = new Stage();
// firstStage.setTitle("Login");
// firstStage.setScene(new Scene(loginRoot, 600, 400));
//firstStage.show();
/*Stage secondaryStage = new Stage();
secondaryStage.setTitle("Administrator");
secondaryStage.setScene(new Scene(admin, 600, 399));
secondaryStage.show();
Stage ternaryStage = new Stage();
ternaryStage.setTitle("For new admins");
ternaryStage.setScene(new Scene(registerAdmin, 600, 400));
ternaryStage.show();
Stage forthStage = new Stage();
forthStage.setTitle("New customers register here");
forthStage.setScene(new Scene(registerCustomer, 600, 400));
forthStage.show();
Stage pentaStage = new Stage();
pentaStage.setTitle("Register new company here");
pentaStage.setScene(new Scene(registerCompany, 600, 400));
pentaStage.show();
Stage hexaStage = new Stage();
hexaStage.setTitle("Create flats here");
hexaStage.setScene(new Scene(registerFlat, 600, 400));
hexaStage.show();*/
}
public static void main(String[] args) {
launch(args);
}
}
下面我已经包含了我的控制器代码:
package realEstateApplication.controllers;
import javafx.fxml.FXML;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.stage.Modality;
import javafx.stage.Stage;
/**
* Created by PriteshJ on 4/16/16.
*/
public class loginViewController extends Application {
@FXML private TextField username_tField;
@FXML private PasswordField password_tField;
@FXML private Button login_Button;
@FXML private Button signUp_Button;
public loginViewController() {
System.out.println("Login Controller constructor invoked ...\n");
}
@Override
public void start(Stage loginStage) throws Exception {
Parent loginRoot = FXMLLoader.load(getClass().getResource("views/loginView.fxml"));
if(loginRoot == null)
System.out.println("something weird happened .... ");
loginStage.setTitle("Login");
loginStage.setScene(new Scene(loginRoot, 600, 400));
loginStage.initModality(Modality.WINDOW_MODAL);
loginStage.show();
}
}
(所以我尝试传递一个对Parent变量的引用,该变量指向我的fxml文件,这个文件在start方法的范围内,因为我的Main类扩展了Application(javafx),这给了我NullPointerException。 试图让它静止,但也没有用。 然后尝试了我现在发布的方法,它没有给出任何错误,但它都不起作用。)
我正在尝试从JavaFX中的MVC角度思考。所以我得到了一个loginViewController,我依靠它完全拥有login.fxml并对其进行任何操作。我有一个JavaFX应用程序启动的主类,但它只能从我的viewController的对象构造我的视图。我经历了很多例子,但到目前为止,我从来没有遇到过一个例子,它展示了如何做我想做的事情。
期待建议。