我可以在同一个Swing应用程序中使用两种不同的外观吗?

我正在使用Flamingo色带和Substance Office 2007的外观和感觉。

当然,现在每个控件都具有这种外观和感觉,甚至是对话框上的控件。

我想要的是类似于Office 2007,其中的色带具有Office 2007外观,但其他控件保持其原生的Vista / XP外观。

是否可以为某些控件分配不同的外观和感觉? 也许使用某种链接或代理外观和感觉?

我刚刚发现:自从Substance 5.0起 , SKIN_PROPERTY可用。

它允许为不同的JRootPanes分配不同的皮肤(即JDialogJFrameJInternalFrame

一个小技巧:我重写JInternalFrame以删除额外的边框和标题窗格,使其看起来就像一个无边框面板。 这样就可以创建一种印象,即表单/对话框的不同部分具有不同的外观。

这是一个可以自动改变外观的库。 我不确定这会以不同的方式对每个组件进行,但你应该看看它。 pbjar.org

如果你想深入了解一下这本书应该是有用的/ java-look-and-feel-design-guidelines-second-edition

我很高兴看到一些代码示例,如果有人可以写它,随意开始。

编辑:

在这个论坛postThread我发现了以下描述

Swing使用外观(PLAF)。 PLAF没有附加在每个JFrame级别上。 它们附加在每个VM级别上。 在一个应用程序中混合PLAF几乎是不可能的。 我看过几次尝试,都失败了。

不幸的是,Swing在幕后做了很多“伪全球化”的事情。 AFAIK,唯一的方法是使用私有AppContext API。 每个AppContext都有自己的事件调度线程和其他“伪全局”。