GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como eu faço pra chamar uma Application várias vezes no JavaFX?

java
Tags: #<Tag:0x00007fc5fd680e28>

#21

Acho que eu descobri outra solução:

public class GoogleSignIn extends Application{

	@Override
	public void start(Stage primaryStage) throws Exception {
		Pane root = FXMLLoader.load(GoogleSignIn.class.getResource("/fxml/GoogleSignIn.fxml"));
		Scene scene = new Scene(root,818,641);
		primaryStage.setScene(scene);
		primaryStage.setTitle("Conectar-se");
		primaryStage.show();
		primaryStage.show();
	}

	public static void main(String[] args) {
		launch(args);
	}
}

Daí nas outras classes eu chamo:

GoogleSignIn.launch(GoogleSignIn.class);

#22

Conseguiu botar teu projeto lá no Git?


#23

Já finalizei, mas não coloquei ainda…


#24

Finalizei a biblioteca e publiquei no git:


#25

Eu estou adaptando o meu projeto, porém eu notei que não existe um setFXML, e se eu quiser alterar a cena, é possível?


#26

É possível, mas a ideia da lib é uma cena por janela, use:

getWindow().setScene(nova_cena);

#27

Aparentemente funcionou, mas acho que eu fiz algo de errado. Eu estou recebendo o seguinte no console:

LOAD VIEW
false

/C:/Users/thall/workspace/Meus-Dados/target/classes/fxml/MainWindow.fxml
 - false
javafx.fxml.LoadException: 
/C:/Users/thall/workspace/Meus-Dados/target/classes/fxml/MainWindow.fxml

	at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
	at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579)
	at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
	at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
	at com.tkfentretenimento.meusdados.controller.WindowController.loadView(WindowController.java:130)
	at com.tkfentretenimento.meusdados.controller.WindowController.createShow(WindowController.java:164)
	at com.tkfentretenimento.meusdados.controller.WindowController.show(WindowController.java:158)
	at com.tkfentretenimento.meusdados.model.UserDAO.signInOffline(UserDAO.java:49)
	at com.tkfentretenimento.meusdados.model.UserDAO.isOfflineUser(UserDAO.java:33)
	at com.tkfentreteniment.meusdados.start.Start.<init>(Start.java:34)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:819)
	at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
	at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
	at com.tkfentretenimento.meusdados.controller.MainWindow.initialize(MainWindow.java:204)
	at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
	... 21 more

Eu já conferi, não tem nada de errado no fx:controller e o FXML foi carregado (eu acho). A única coisa que tem nessas linhas das casses da minha aplicação citadas na exceção é isso:

new MainWindow().show(null);

#28

Não sei se está usando a minha lib, pois nela não existe método show com parâmetros, de qualquer forma veja seu método initialize tem algo errado nele.


#29

Valeu cara, eu realmente não estava utilizando a biblioteca. Eu peguei o .jar e adicionei na aplicação, porém eu não percebi que eu não havia deletado o WindowController antigo da minha src, e também não vi que tu mudou o nome para WindowControllerFx, e eu estendi de WindowController. Agora minha aplicação está funcionando perfeitamente, muito obrigado pela ajuda mesmo. Ah, eu esqueci de explicar porque eu preciso alterar a cena. É que eu tenho uma animação de fade entre elas, ao invés de ter várias telas que mudam com o botão next, eu tenho uma tela que passa uma animação de fade e troca o conteúdo.


#30

Entendi, já fiz isso mas de outras formas (sem trocar a cena). Somete tinha um stackpane root e trocava seu conteúdo e jogava uma animação…
Mas blz, que bom que deu certo.