JavaFX—Application
原文链接https://www.cnblogs.com/yanquebbuyan/p/9966487.html
JavaFX—Application
1.Application是JavaFX程序的入口,任何javafx应用程序程序都要继承该类并重写start()方法
public class TsetStage extends Application{ public void start(Stage primaryStage) throws Exception { } }
2.通过main()执行Application的launch(String str)方法,当然launch(String str)方法不传入任何值也是可以执行的.launch(String str)方法会默认执行本类下的init()、start()、stop()方法。执行下面的main()方法后显示顺序为:
这是初始化方法➡这是start()方法➡这是stop()方法➡这是main()方法。
可以看出只有当stop()方法(即Application应用程序被正常关闭)被调用时(也可以是图形界面右上角的❌被点击时),launch()方法才执行完毕。(通过Platform.exit()退出界面也是属于正常退出)
通过IDE控制台终止应用程序属于非正常终止,它是通过关闭JVM从而关闭应用程序的。
1 import javafx.application.Application; 2 public class TsetStage extends Application{ 3 public static void main(String[] args) { 4 launch(args);//也可以写作launch() 5 System.out.println("这是main方法"); 6 } 7 @Override 8 public void init(){ 9 System.out.println("这是初始化方法"); 10 } 11 @Overrid 12 public void start(Stage primaryStage) throws Exception { 13 priamryStage.show(); 14 System.out.println("这是start()方法"); 15 } 16 @Override 17 public void stop() throws Exception { 18 super.stop(); 19 System.out.println("这个是stop()方法"); 20 } 21 }
3.也可以在其他类中的main()方法中调用launch()方法,但要传入相应的参数,第一个参数指定一个Application的子类从而调用该类下的init()、start()、stop()方法,第二个参数制定一个String类型的值。
当然同上一个launch(String str)方法,该launch(? extends Application,String str)也可以不指定String类型的值。
1 import javafx.application.Application 2 public class TestStage2{ 3 public static void main(String args[]){ 4 Application.launch(TestStage.class,args);//也可以写作Application.luanch(TestStage.class) 5 } 6 }
4.Application类下的getHostServices()方法,该方法返回一个HostServices实例,该实例的showDocument()方法可以指定一个网站地址或者URI
从而以系统默认的浏览器打开该URI。geDocumentBase()返回一个String类型的当前文档所在的路径。
1 import javafx.application.Application; 2 import javafx.application.HostServices; 3 public class TsetStage extends Application{ 4 public static void main(String[] args) { 5 launch(args); 6 } 7 @Override 8 public void start(Stage primaryStage) throws Exception { 9 HostServices hostServices = getHostServices(); 10 hostServices.showDocument("www.baidu.com"); 11 System.out.println(hostServices.getDocumentBase()); 12 } 13 }
另外线程方面,执行main()方法时是主线程,当调用init()方法时是JavaFX-Launcher线程,当调用start()方法时是JavaFX Application Thread线程,当调用stop()方法时依然是JavaFX Application Thread线程