我正在尝试建立一个聊天程序。我可以在使用java awt
包时使用java fx
但我似乎有点困惑。当你第一次构建java fx project
所有方法时,即使public static void main(string args[])
就在那里,那里也是你开始primaryStage
编码的地方......我没有问题编码我的程序的视觉方面它只是我不知道我应该在哪里设置我的程序的Network
部分以及在我完成时把它放在哪里..
**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我的问题是我将在哪里放置我的ServerConnection方法,以便它将与我的primary Stage
<一起运行/ p>
很抱歉很长的帖子......有一个String ="potato";
答案 0 :(得分:0)
如果正确启动了JavaFX应用程序,它根本不会使用main()
方法 - 您可以暂时删除它(作为实验)并进行检查,但是它可能不会用于任何其他目的。向后兼容性。你肯定应该不依赖主要方法在FX应用程序中做任何特别的事情;它应该只调用launch()
而不是其他任何内容。
相反,您的主类应该扩展Application
,JavaFX运行时将为您创建一个实例,创建一个主阶段,并调用start方法为您提供该阶段的引用。从这个方法你可以做任何你喜欢的事情,但请记住它是在UI线程上(所以你应该为任何长时间运行的任务创建一个额外的线程,就像你在任何其他工具包中那样,如Swing。)
答案 1 :(得分:0)
您可以在start(Stage primaryStage)方法的开头运行此setupConnection方法。这样它将在显示阶段之前执行。你也可以从main方法中运行这两个方法,但是正如berry120所说:你不需要在main中调用launch(args)方法,如果它扩展了Application你只需要启动方法就可以了。
完成后,您可以使用
stage.setOnCloseRequest(e -> {
//code to execute, something like socket.close();
});
您可以将stage.show()更改为stage.showAndWait()