背景:
从文档中,该方法SwingUtilities.updateComponentTreeUI()
要求树(什么树?)中的每个组件调用该方法来更新它们自己的UI 属性updateUI()
。
强烈建议SwingUtilities.updateComponentTreeUI()
在设置好LAF后调用,调用method: ,否则LAF主题无法应用到某些组件上,最糟糕的是,某些组件无法重新设计(可能会抛出一些异常?)。UIManager.setLookAndFeel(LAFClassName)
我对这种事情很陌生,我是在发现更具启发性的方法之后才发现SwingUtilities.updateComponentTreeUI()
的UIManager.setLookAndFeel(LAFClassName)
。
在发现之前SwingUtilities.updateComponentTreeUI()
我一直有一些问题/Exceptions/NullPointerExceptions,而事实是直到我没有发现SwingUtilities.updateComponentTreeUI()
方法之前我才真正理解它们的原因,这让我明白树中的某些组件不可能是更新到新的 LAF。
具体/实际问题:
例如,如果我有一个
子框架
(动态实例化或由动作事件(点击)触发
主框架
),在这里我设置了外观和感觉属性,然后我调用SwingUtilitiesupdateComponentTreeUI()
传递给它的引用mainJFrame
:
SwingUtilities.updateComponentTreeUI(mainJFrame)
,
最后一个是否会更新其所有子组件/subJFrames(并因此更新subJFrame
我设置 LAF 的位置)?
这不是一个微不足道的问题(也请记住文档所说的内容),因为我UIManager.setLookAndFeel(LAFClassName)
在中调用方法subJFrame
(这个调用实际上是做什么的?)然后我调用SwingUtilities.updateComponentTreeUI()
方法传递给它的引用mainJFrame
,那么LAF 主题是什么将应用于mainJFrame
?的所有子组件 如果一些子组件/subJFrames还没有被初始化呢?