バックグラウンド:
ドキュメントから、メソッドSwingUtilities.updateComponentTreeUI()
はツリー内の各コンポーネント (What tree?) にメソッドを呼び出して独自のUI プロパティを更新するように依頼します。
メソッドを呼び出して LAF を設定した後に呼び出すことを強くお勧めします:updateUI()
SwingUtilities.updateComponentTreeUI()
UIManager.setLookAndFeel(LAFClassName)
私はこの種のことは初めてで、より示唆に富む方法を発見した後にその方法を発見しましSwingUtilities.updateComponentTreeUI()
たUIManager.setLookAndFeel(LAFClassName)
。
発見する前SwingUtilities.updateComponentTreeUI()
に、私はいくつかの問題/Exceptions/NullPointerExceptionsSwingUtilities.updateComponentTreeUI()
を抱えていました。真実は、メソッドを発見するまで、それらの理由を本当に理解していなかったということです。新しいLAFに更新されました。
具体的/実際の問題:
たとえば、私が持っている場合
subJFrame
(動的にインスタンス化されるか、
mainJFrame
) で、ルック アンド フィールのプロパティSwingUtilitiesupdateComponentTreeUI()
を設定し、次に への参照を渡すことを呼び出しますmainJFrame
。
SwingUtilities.updateComponentTreeUI(mainJFrame)
、
この最後のものは、そのすべてのサブコンポーネント/subJFrames を更新する予定ですか(したがってsubJFrame
、LAF を設定した場所を更新します) ?
これは些細な質問ではありません(ドキュメントに書かれていることも念頭に置いてください)。 でUIManager.setLookAndFeel(LAFClassName)
メソッドを呼び出しsubJFrame
(実際にこの呼び出しは何をするのでしょうか?)、次に へSwingUtilities.updateComponentTreeUI()
の参照を渡すメソッドを呼び出すmainJFrame
ため、LAF テーマは何ですか?のすべてのサブコンポーネントに適用されますmainJFrame
か? また、サブコンポーネント/subJFrames の一部がまだ初期化されていない場合は?