同じSwingアプリケーションで2つの異なるルックアンドフィールを使用できますか?

StackOverflow https://stackoverflow.com/questions/446056

質問

FlamingoリボンとSubstance Office 2007のルックアンドフィールを使用しています。

もちろん、すべてのコントロールには、ダイアログボックスのコントロールを含め、このルックアンドフィールがあります。

私が欲しいのは、Office 2007のようなものです。リボンはOffice 2007の外観を持ちますが、他のコントロールはネイティブのVista / XPの外観を維持します。

特定のコントロールに異なるルックアンドフィールを割り当てることは可能ですか?おそらく、何らかのチェーンまたはプロキシのルックアンドフィールを使用していますか?

役に立ちましたか?

解決

発見したばかり: Substance 5.0 以降 SKIN_PROPERTY が利用可能です。

異なるスキンを異なる JRootPanes (つまり、 JDialog JFrame JInternalFrame )に割り当てることができます

>

ちょっとしたトリック: JInternalFrame をオーバーライドして、余分な境界線とタイトルペインを削除し、境界線のないパネルのようにします。そうすれば、フォーム/ダイアログのさまざまな部分の外観が異なるという印象を与えることができます。

他のヒント

これは、ルックアンドフィールを自動的に変更するライブラリです。これがすべてのコンポーネントに対して異なる方法で行われるかどうかはわかりませんが、見てください。 pbjar.org

この本は、ルックアンドフィールの詳細を知りたい場合に役立ちます / java-look-and-feel-design-guidelines-second-edition

誰かがそれを書くことができたら、気軽に始めてください。いくつかのコード例を見てうれしいです。

編集:

このフォーラムスレッドスレッドで次のことがわかりました説明

  

SwingはLook&を使用しますフィール(PLAF)。   PLAFはJFrameごとに添付されません   レベル。それらはVMごとに接続されます   レベル。混ぜることはほとんど不可能です   1つのアプリケーション内のPLAF。私は持っています   いくつかの試みを見ましたが、すべて失敗しました。

残念ながら、Swingは多くの「擬似グローバル」を行います。背後にあるもの。知る限り、一貫してそれを行う唯一の方法は、プライベート AppContext APIを使用することです。各 AppContext には、独自のイベントディスパッチスレッドと他の" psuedo-globals"があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top