2016-05-08 5 views
2

スイングコンポーネントを埋め込んだJavaFxアプリケーションがあります。 JavaFxとSwingコンポーネントのルックアンドフィールは異なります。ですから、私はこの問題に対処し、共通のルック・アンド・フィールを提供してアプリケーションをよりプロフェッショナルに見せ、ユーザーが受け入れることができるソリューションを探しています。JavaFxとSwingルックアンドフィールの同期方法

どのようなヘルプも大幅に強化されています。 IMO現時点では本当に良い一般的な解決策を持っているどちらも

+0

あなたの質問が明確でないことを説明してください。JavaFXを使用するか、そのアプリケーションをJavaFxに変更しますか? –

+0

JavaFxにいくつかのスイングコンポーネントを埋め込む必要があるため、技術的な課題があります。私はJavaFxで画面の90%を持っていて、Swingでは残りの部分が残っています。私は今質問が明確であることを願っている。 – DeepInJava

+0

ランタイムでLookAndFeelを変更するメソッドを知っていますが、クライアントマシン上でアプリケーションが実行されているためにメソッドがJavaFxをサポートしていないため、SwingとNimbusを切り替えることができます。 –

答えて

1

つのオプション、:

1.マッチシステムの外観とSwingで

を感じるスイングは、システムの外観を使用するためにUIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())を設定し、感じる。

デフォルトでは、JavaFXはシステムのルックアンドフィールにマッチしません。また、Swing UIManagerについての知識はありません。 JavaFXには、独自の組み込みクロスプラットフォーム・ルック・アンド・フィール(Modena in Java 8 and Caspian in Java 7)があります。 override the defaultプラットフォームのルック・アンド・フィールをカスタムルック・アンド・フィールで表現することができます。たとえば、AquaFXのようなJavaFXのシステム・ルック・アンド・フィールを作成している人もいますが、JavaFXを実行できるすべてのシステムのルック・アンド・フィールのサポートはありません。

サポートしたいプラットフォームを確認して、JavaFXとそのプラットフォームのシステムのルックアンドフィールと一致するサードパーティの定義が見つかるかどうか確認できます。私が推測するところは、さまざまなプラットフォームでシステムのルック・アンド・フィールを高品質で一致させたい場合、このルートには満足のいく解決策が得られないということです。

2.クロスプラットフォームのスイングを見にあなたのJavaFXのUIと一致し、

これは、クロスプラットフォームのSwingの外観を選択する必要が、その後のためのユーザーエージェントスタイルシートを定義し、アプリケーションの感じるを感じるあなたJavaFXウィジェットと一致するJavaFXアプリケーションは、Swingウィジェットの外観に見えます。 JavaFX CSSベースのスタイルは非常に柔軟です。いくつかの作業では、多くのウィンドウツールキットの外観をエミュレートできます(button styling sampleで示されています)。だから、あなたは確かに何か共通のSwingの見た目に合ったものを作ることができます。

しかし、誰もこれをやろうとしたことはありませんでした。必要な作業が多数のウィジェットにとって重要ではなく、アプリケーション全体を少し悪化させてSwingインターフェイスJavaFXの部分とSwingの部分をよりよく見えるようにしたり、JavaFXの部分だけをデフォルトのJavaFXの外観で使用したり、Swingの部分をSwingしたりするような作業に費やしていました。


だから、本当に、あなただけのIMO、最も現実的である第三の選択肢、と残っている :アプリケーションのSwingの部品やアプリケーションのJavaFXの部分が互いに少し異なって見えるだろうことを受け入れます。それがあなたのアプリケーションにとって容認できない妥協であるならば、あなたのアプリケーションを単一のツールキット(SwingまたはJavaFXのいずれか)を使用してUIコントロールをレンダリングするように変換してください。

関連する問題