javafx-8 – 从另一个类启动JavaFX应用程序
发布时间:2020-12-15 07:35:49 所属栏目:Java 来源:网络整理
导读:我需要从另一个“容器”类启动一个 javafx应用程序并在Application上调用函数,但是似乎没有任何方法可以获得对使用Application.launch()方法启动的Application的引用.这可能吗? 谢谢 解决方法 我有同样的问题,并使用这个hack绕过它: import javafx.applica
我需要从另一个“容器”类启动一个
javafx应用程序并在Application上调用函数,但是似乎没有任何方法可以获得对使用Application.launch()方法启动的Application的引用.这可能吗?
谢谢 解决方法
我有同样的问题,并使用这个hack绕过它:
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; import java.util.concurrent.CountDownLatch; public class StartUpTest extends Application { public static final CountDownLatch latch = new CountDownLatch(1); public static StartUpTest startUpTest = null; public static StartUpTest waitForStartUpTest() { try { latch.await(); } catch (InterruptedException e) { e.printStackTrace(); } return startUpTest; } public static void setStartUpTest(StartUpTest startUpTest0) { startUpTest = startUpTest0; latch.countDown(); } public StartUpTest() { setStartUpTest(this); } public void printSomething() { System.out.println("You called a method on the application"); } @Override public void start(Stage stage) throws Exception { BorderPane pane = new BorderPane(); Scene scene = new Scene(pane,500,500); stage.setScene(scene); Label label = new Label("Hello"); pane.setCenter(label); stage.show(); } public static void main(String[] args) { Application.launch(args); } } 然后是您从以下位置启动应用程序的类: public class StartUpStartUpTest { public static void main(String[] args) { new Thread() { @Override public void run() { javafx.application.Application.launch(StartUpTest.class); } }.start(); StartUpTest startUpTest = StartUpTest.waitForStartUpTest(); startUpTest.printSomething(); } } 希望对你有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |