[英]Create a modal javafx.stage.FileChooser inside a swing application
[英]Create a JavaFX primary stage inside a normal Java application
我有一個啟動器和一個JavaFX類。 啟動程序將創建一個名為JavaFXApplication1的類。 JavaFXApplication包含整個JavaFX代碼(在這種情況下僅是一個示例),並且應設置一個具有一個主要階段的窗口。
啟動器具有靜態的主入口點-但我讀到JavaFX並沒有真正使用此入口點。 這解釋了我的控制台輸出(請參閱文章末尾)
我不知道這是否可行(Launcher創建JavaFX窗口-入口點不在 presentation類本身中)。 我不想使用預加載器(我認為預加載器僅在啟動時用於重負載),因為啟動器將整個程序表示為一個對象(演示,業務和持久性-3層程序)。 入口點應位於表示形式類之外(在此示例中為啟動器類)
以下示例確實有效。 但是對我來說,就像一塊“黑魔法”
這是我的代碼
啟動器:
package javafxapplication1;
public class Launcher
{
public static void main(String[] args)
{
System.out.println("main()");
// Do some stuff and then create the UI class
JavaFXApplication1 client = new JavaFXApplication1();
client.caller(args);
}
}
JavaFXApplication1:
package javafxapplication1;
import javafx.application.Application;
import javafx.stage.Stage;
public class JavaFXApplication1 extends Application
{
@Override
public void start(Stage primaryStage)
{
System.out.println("start()");
primaryStage.setTitle("I am a JavaFX app");
primaryStage.show();
}
public void caller(String[] args)
{
System.out.println("caller()");
launch(args);
}
/* We call the main function from the client
public static void main(String[] args)
{
launch(args);
}*/
}
該程序的輸出為:
start()
有沒有辦法創建這樣的應用程序? 謝謝
這個問題的答案是創建一個Java項目而不是JavaFX項目。 之后,您可以添加JavaFX主類並編寫一個方法(調用launch())。
也許您必須從/ jdk _ * / jre / lib目錄中添加編譯時庫deploy.jar,javaws.jar,jfxrt.jar和plugin.jar
我在MacDevign類的主要方法中的Running JavaFX Application實例上寫了一篇文章。
可能是您要找的東西嗎?
代碼很長,因此最好參考該文章,但是用法很簡單。 請注意,init和stop方法不使用啟動器線程,因此請謹慎使用。
目的是在您的類的主要方法上運行虛擬javafx應用程序,以進行快速測試/實驗。
要使用此功能,只需在使用lambda的main方法中添加以下內容,或者可以使用匿名內部類樣式。
// using the start method of Application class
Utility.launchApp((app, stage) -> {
// javafx code
}, arArgs);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.