2017-11-13 7 views
4

StyleManagerを直接的で明確な置き換えなしに除外していたのは誰の気持ちですか?JavaFX 9(StyleManagerの代わり)を使用するアプリケーション用のいくつかのデフォルトCSSスタイルシートを設定するにはどうすればよいですか?

アプリケーション全体(カスタムコンポーネント、カスタム擬似クラス、カスタムプラットフォーム固有のパッチなど)に合わせていくつかのリビルドを行う必要があります。 JavaFX 8では、私は以下を使用できます:com.sun.javafx.css.StyleManager.getInstance().addUserAgentStylesheet("MyShit.css");

しかしJava 9 StyleManagerでは利用できません。だから、すべてのシーンにCSSを設定する方法はありますか?

"Application.setUserAgentStylesheet"の使用はデフォルトのlookandfeelを失いたくないので、私はすでにMODENAスタイルを設定するために使用しています。私はそれを置き換えないようにデフォルトのCSSを拡張したいと思います。 そして私はMODENA全体を(明らかに)書き直したくありません。

私は本当に、アプリケーション内のすべてのフォーム/シーンに対して同じスタイルシートを手動で設定する(またはすべてのFXMLファイルに追加する)必要はありません。動的に構築されたダイアログには多くの形式があります。そして主な理由は、いくつかのアプリケーション間で共有される部分(ライブラリ)があるため、スタイルシート(異なるアプリケーションに異なる名前とパスを持つ可能性があります)をハードコードしたくないということです。

私は、プログラムの1つのポイントでアプリケーションのすべての可能なシーンのための追加のスタイルシートを設定する方法が必要です。それはFX9でも可能ですか?

P.S.カスタムFXMLローダー、CSSローダー、シーンローダー、シーン作成を傍受する他の方法を調べましたが、方法はありません。

+2

私は無慈悲なことを意味するわけではありませんが、com.sun。\ *パッケージは最終的に消えてしまうので、長年にわたって警告されています。 Java 8では、コンパイラは警告を出しました。おそらく、あなたはそれらの共有UIの独自の(おそらく静的な)プロパティを作成できますか? – VGR

+0

Shureは警告しましたが、何も選択肢はありません。 – Sap

+0

何のための静的プロパティですか? CSSファイル名?いくつかの共有GUIコンポーネントとスタイルがあります。また、基本的なスタイルシートなどのいくつかのスタイルを変更する必要はありません。すべてのFXMLに自分のCSSのローカルパスを追加する必要はありませんが、プロジェクトに依存し、フォームの場所に依存していて、FXMLのルートコンポーネントを変更した場合、ルートコンポーネントのタグに記述されています)。また、私は多くのローダーやcinstruuctorsにcustom/modifieedダイアログなどを追加する必要があります。もし明日(実際には今日)私は1つのアプリケーション幅広いCSSではなく2つを必要とします...そして、カスタムスキンを作るのも簡単な方法でした。 – Sap

答えて

1

これはもう一つのJavaFXの欠如です.JVMパラメータを使用してStyleManagerにアクセスできるようにするだけです。

--add-exports=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED 
+1

これは単なる一時的な修正であり、JDK 9を過ぎても継続的にサポートされません。 –

+0

JavaFXが改良されるまで機能します。つまり、StyleManagerがパブリックパッケージに置かれることを意味します。これがいつ行われるのかは現在分かりません。 – wzberger

+2

私はJavaOneで説明されている方向に基づいてパブリックパッケージに他のものを入れるための現在のロードマップはないと思います –

関連する問題