Scene Builder 中定义了fx:id之后,可以导出controller
整体定义跳转
import javafx.fxml.Initializable;
import java.net.URL;
import java.util.ResourceBundle;
public class AbstractBaseController implements Initializable {
private MainApplication application;
public void setApp(MainApplication mainApplication){
this.application=mainApplication;
}
public MainApplication getApplication() {
return application;
}
public void initialize(URL location, ResourceBundle resources) {
}
}
主界面:
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.fxml.JavaFXBuilderFactory;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import sample.address.AddressController;
import sample.login.LoginController;
import java.net.URL;
public class MainApplication extends Application {
private Stage stage;
private final double MINIMUM_WINDOW_WIDTH = 400.0;
private final double MINIMUM_WINDOW_HEIGHT = 250.0;
@Override
public void start(Stage primaryStage) throws Exception{
stage = primaryStage;
stage.setTitle("FXML Login Sample");
stage.setMinWidth(MINIMUM_WINDOW_WIDTH);
stage.setMinHeight(MINIMUM_WINDOW_HEIGHT);
toLogin();
//Parent root = FXMLLoader.load(getClass().getResource("login/login.fxml"));
primaryStage.setTitle("校园排课系统");
primaryStage.setIconified(true);
// primaryStage.setScene(new Scene(root, 450, 300));
primaryStage.show();
}
private void toLogin() {
LoginController login = null;
try {
login = (LoginController) sceneContent("login/login.fxml");
} catch (Exception e) {
e.printStackTrace();
}
login.setApp(this);
}
private Initializable sceneContent(String fxml) throws Exception {
FXMLLoader loader = new FXMLLoader();
URL resource = getClass().getResource(fxml);
loader.setLocation(resource);
loader.setBuilderFactory(new JavaFXBuilderFactory());
GridPane page = loader.load(resource.openStream());
Scene scene = new Scene(page);
stage.setScene(scene);
stage.sizeToScene();
return (Initializable)loader.getController();
}
private void gotoAddress() {
AddressController main = null;
try {
main = (AddressController) sceneContent("address/address.fxml");
} catch (Exception e) {
e.printStackTrace();
}
main.setApp(this);
}
/**
* 登录
* @param userName
* @param password
*/
public void login(String userName, String password) {
//todo 验证,成功后跳转
gotoAddress();
}
/**
* 退出
*/
public void logout() {
toLogin();
}
public static void main(String[] args) {
launch(args);
}
controller可以使用Scene Builder导出