ホームページ >Java >&#&チュートリアル >同じパッケージ内の別のインスタンスからスタンドアロン JavaFX アプリケーションを起動するにはどうすればよいですか?
両方のアプリケーションが同じパッケージに属している場合でも、別のアプリケーション内からスタンドアロン アプリケーションを起動する同じパッケージは簡単そうに見えますが、正しく実装するのは難しい場合があります。まず、この問題を徹底的に調査する必要があります。
この問題は、Application サブクラスの launch() メソッドを別の Application サブクラス内から利用しようとすると発生します。 launch() メソッドはアプリケーション全体を開始することを目的としており、複数回呼び出すべきではないため、このアプローチではエラーが発生します。
このエラーを回避するには、Application サブクラスが完全なクラスを表すことを認識することが重要です。 Java 仮想マシン (JVM) 内で実行されるアプリケーション。したがって、個別のアプリケーションごとに、JVM ごとに 1 回だけインスタンス化する必要があります。再利用可能なコードはすべて、Application サブクラスの外部の別のクラスに移動する必要があります。
再利用可能なコンポーネントのリファクタリング
Application サブクラスを利用する代わりに、より柔軟なアプローチは次のとおりです。個々のコンポーネントに通常のクラスを採用します。これらのクラスは、必要に応じてインスタンス化して利用できるため、スタンドアロン アプリケーションの作成や、より大規模なアプリケーションへの統合が可能になります。
public class FirstModule { private BorderPane view; public FirstModule() { view = new BorderPane(); // ... } public Parent getView() { return view; } }
public class CompositeModule { private HBox view; public CompositeModule() { // ... } public Parent getView() { return view; } }
スタンドアロン アプリケーションへの統合
独立したアプリケーションを作成するには、アプリケーション内で必要なモジュールをインスタンス化します。 subclass.
public class FirstApplication extends Application { @Override public void start(Stage primaryStage) { Scene scene = new Scene(new FirstModule().getView()); // ... } }
大規模なアプリケーションへの統合
これらのモジュールを大規模なアプリケーション内に含めるには、それらを組み合わせるクラスを作成します。
public class CompositeApplication extends Application { @Override public void start(Stage primaryStage) { Scene scene = new Scene(new CompositeModule().getView()); // ... } }
結論
この手法は柔軟性が高く、再利用可能なコンポーネントの開発。さまざまなスタンドアロン アプリケーションで利用したり、より広範なアプリケーションに統合したりできます。この再構築は、JavaFX MVC アーキテクチャの意図された設計とも一致しており、アプリケーション ロジックをユーザー インターフェイス コンポーネントから分離しています。
以上が同じパッケージ内の別のインスタンスからスタンドアロン JavaFX アプリケーションを起動するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。