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导出
本文介绍了一个基于JavaFX的应用程序框架,展示了如何通过FXML文件和对应的控制器实现不同界面之间的跳转。具体包括如何设置主应用程序类、加载FXML资源文件、实例化控制器以及进行界面切换等关键步骤。
4629

被折叠的 条评论
为什么被折叠?



