0
我有簡單的主類。 在那裏,我試圖通過user
到WindowLogin
:從主類傳遞對象到JavaFX應用程序
package client;
public class Client{
public User user;
public static void main(String[] args) {
try {
Client client = new Client();
client.run(args);
} catch (Exception e) {
System.out.println("[ERR] Fatal error");
}
}
public void run(String[] args)
{
user = new User();
WindowLogin windowLogin = new WindowLogin();
windowLogin.user = user;
windowLogin.show();
}
}
窗口主類。在那裏,我嘗試調用user
test()
功能(在真實的,我需要把它傳遞給WindowMainController
):
package client;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.Parent;
import java.io.IOException;
public class WindowLogin extends Application{
private Stage stage;
public User user;
@Override
public void start(Stage primaryStage) throws Exception {
stage = new Stage();
try {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("views/WindowLogin.fxml"));
WindowLoginController controller =
fxmlLoader.<WindowLoginController>getController();
user.test();
Parent root = fxmlLoader.load();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
} catch (IOException e) {
e.printStackTrace();
}
}
public void show(){
launch();
}
public void hide() { stage.hide(); }
}
當我嘗試運行它:
Exception in Application start method
當然(也許:) )它是因爲windowLogin中的user
是null
。
我做錯了什麼? user
如何通過windowLogin
? (我不會使用Singletone)
更新:
我需要使用開始user
()方法,如我之前說的 - 我需要傳遞user
到WindowMainController
您的解決方案正常工作的實例。但是有一個問題:我不能在'start'方法中使用'this.user'。當我做'user.test()'時,它仍然會顯示'Exception in Application start method'' –
幾個選項 - 它的一個也是一個,也是一個選項 - 聲明class爲static:D。好吧,我沒有看到另一個出口:(Thankyou的幫助;) –
你不必聲明類爲靜態,只需將用戶對象的引用聲明爲靜態! – ItachiUchiha