从另一个类启动JavaFX应用程序

我需要从另一个“容器”类启动一个Javafx应用程序,并在该应用程序上调用函数,但是似乎没有任何方法可以使用Application.launch()方法来获取对该应用程序的引用。这可能吗?谢谢

回答:

我遇到了同样的问题,并使用此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();

}

}

希望对您有帮助。

以上是 从另一个类启动JavaFX应用程序 的全部内容, 来源链接: utcz.com/qa/418656.html

回到顶部