簡體   English   中英

在普通的Java應用程序中創建JavaFX主階段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM