2015-06-11 331 views
1

我試圖建立一個聊天程序。我可以做到這一點,當我使用java awt包但java fx我似乎有點困惑。當你第一次建立一個java fx project所有的方法,即使public static void main(string args[])在那裏,有一個地方,你開始primaryStage的編碼...我沒有問題編碼我的程序的視覺方面它只是我不知道我應該設置我的方案,並把它放在哪裏時,即時通訊做的Network部分..JavaFX聊天應用程序

**CODE: This is Just a View** 

Server extends Application{

public void start(Stage primaryStage){ 
//Where you setup the visual of your program 
} 

public static void main(String args[]){ 
launch(args); // Where the program will run 
} 

public void ServerConnection(){ 
//where i put the codes to setup my streams and SOCKET 
} 

的一個ServerConnection方法包含其他methods很好,但所有這些將前往ServerConnectionMethod現在我的問題是Wh ERE將我把我的一個ServerConnection方法,以便如果JavaFX應用程序正確啓動,將伴隨着我primary Stage

很抱歉的長期post..have一個String ="potato";

+0

想到'開始(...)'方法在JavaFX應用程序中相當於「傳統」Java應用程序中的「main(...)」方法;主要區別在於''start(...)'方法在UI線程上執行,並且爲了方便而接收'Stage'實例。 –

回答

0

運行時,它不會使用main()方法 - 你可以暫時刪除它(作爲一個實驗)並檢查,但有可能除了向後兼容性之外,它沒有任何其他用途。你肯定應該而不是依靠主要方法做任何特殊的外匯應用程序的情況下;它只應該撥打launch(),而不是別的。

相反,您的主類應擴展Application,並且JavaFX運行庫將爲您創建一個實例,創建一個初級階段並調用start方法,爲您提供對該階段的引用。從這種方法中,你可以做任何你喜歡的事情,但要記住它在UI線程上(所以你應該爲任何長時間運行的任務創建一個額外的線程,就像你在任何其他工具包如Swing中一樣。)

+0

所以我必須創建另一個運行主和另一個爲fx應用程序的類? –

+0

@IvanLorenzo完全沒有問題,只需將主要方法留在您的FX課程中即可。 – berry120

0

您可以在開始(Stage primaryStage)方法中運行此setupConnection方法。這樣它將在展示舞臺前被執行。你也可以直接運行main方法,但是如berry120所說:你不需要在main方法中調用launch(args)方法,如果它擴展了Application,那麼你只需要使用start方法即可。

當你完成,你可以使用一個

stage.setOnCloseRequest(e -> { 
//code to execute, something like socket.close(); 
}); 

而且你可以改變stage.show()來stage.showAndWait()