-
Notifications
You must be signed in to change notification settings - Fork 139
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to change the display of the page #87
Comments
Here is my temporary solution: Step 1: Use public class JFxFxmlView extends AbstractFxmlView {
private String value;
private String[] css;
private String bundle;
private String encoding;
private String title;
private StageStyle stageStyle;
private final FXMLView annotation = getFXMLAnnotation();
public JFxFxmlView () {
super();
this.value = this.annotation.value();
this.css = this.annotation.css();
this.bundle = this.annotation.bundle();
this.encoding = this.annotation.encoding();
this.title = this.annotation.title();
String style = this.annotation.stageStyle();
this.stageStyle = StageStyle.valueOf(style.toUpperCase());
}
private FXMLView getFXMLAnnotation() {
Class<? extends AbstractFxmlView> clazz = this.getClass();
FXMLView annotation = clazz.getAnnotation(FXMLView.class);
return annotation;
}
...
...
// getter and setter
Step 2: Use public class JFxToolViewManager extends AbstractJavaFxApplicationSupport implements InitializingBean {
@Autowired
private GxAccountService accountService;
private static ConfigurableApplicationContext APPLICATION_CONTEXT;
public static Scene SCENE;
public static Stage PRIMARY_STAGE;
public static JFxToolViewManager INSTANCE;
@Override
public void afterPropertiesSet() {
INSTANCE = this;
}
@Override
public void beforeInitialView(Stage stage, ConfigurableApplicationContext ctx) {
super.beforeInitialView(stage, ctx);
APPLICATION_CONTEXT = ctx;
PRIMARY_STAGE = stage;
//TODO something...
}
public static void show(Class<? extends JFxFxmlView> window, Modality mode) {
JFxFxmlView view = APPLICATION_CONTEXT.getBean(window);
PRIMARY_STAGE = new Stage();
if (view.getView().getScene() != null) {
SCENE = view.getView().getScene();
} else {
SCENE = new Scene(view.getView());
}
PRIMARY_STAGE.setScene(SCENE);
PRIMARY_STAGE.initModality(mode);
PRIMARY_STAGE.initOwner(getStage());
PRIMARY_STAGE.setTitle(view.getTitle());
PRIMARY_STAGE.initStyle(view.getStageStyle());
PRIMARY_STAGE.showAndWait();
}
public static void show(Class<? extends JFxFxmlView> window) {
JFxFxmlView view = APPLICATION_CONTEXT.getBean(window);
if (GUIState.getScene() == null) {
SCENE = new Scene(view.getView());
GUIState.setScene(SCENE);
}
showView(window);
}
public static void launch(String[] args) {
launch(JFxToolViewManager.class, JFxToolMainView.class, new JFxSplashView(), args);
}
...
... Step 3 : Use
Attention, it's only temporary. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
1、
JavaFXApplication.showView(TagInfoDialog.class, Modality.APPLICATION_MODAL);
2、
@FXMLController
public class TagInfoController implements Initializable {
public void initialize(URL location, ResourceBundle resources) {
Platform.runLater(() -> {
}
Like the code above, I need to change the display of the page when protocol is a different value. But the initialize method of the above code is only executed once (because it is hidden when the page is closed), and it is not executed again when the protocol value changes. How to change the display of the page
The text was updated successfully, but these errors were encountered: