4

ランチャーとJavaFXクラスがあります。ランチャーは、JavaFXApplication1というクラスを作成します。JavaFXApplicationには、JavaFXコード全体(この場合はほんの少しの例)が含まれており、1つのプライマリステージでウィンドウを設定する必要があります。

ランチャーには静的なメインエントリポイントがありますが、JavaFXは実際にはこのエントリポイントを使用していないことを読みました。これは私のコンソール出力を説明しています(投稿の最後を参照してください)

これが可能かどうかはわかりません(ランチャーはJavaFXウィンドウを作成します-エントリポイントはプレゼンテーションクラス自体にはありません)。ランチャーはプログラム全体を1つのオブジェクト(プレゼンテーション、ビジネス、永続性-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()

そのようなアプリケーションを作成する方法はありますか?ありがとうございました

4

2 に答える 2

1

この問題に対する答えは、JavaFXプロジェクトではなく、Javaプロジェクトを作成することです。この後、JavaFXメインクラスを追加してメソッドを作成できます(launch()を呼び出します)。

コンパイル時ライブラリのdeploy.jar、javaws.jar、jfxrt.jar、plugin.jarを/ jdk _ * / jre/libディレクトリから追加する必要があるかもしれません。

于 2013-02-13T08:00:29.813 に答える
1

クラスのメインメソッドであるMacDevignでのJavaFXアプリケーションインスタンスの実行に関する投稿を書きました 。

それはあなたが探しているものでしょうか?

コードはかなり長いので、投稿を参照することをお勧めしますが、使用法は簡単です。initおよびstopメソッドはランチャースレッドを使用しないことに注意してください。注意して使用してください。

目的は、クラスのメインメソッドでダミーのjavafxアプリケーションを実行して、迅速なテスト/実験を行うことです。

これを使用するには、ラムダを使用してmainメソッドに以下を追加するか、匿名の内部クラススタイルを使用できます。

// using the start method of Application class
Utility.launchApp((app, stage) -> {
    // javafx code
}, arArgs);
于 2014-03-27T17:56:36.830 に答える