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

时间:2009-01-15 08:47:43

标签: java swing look-and-feel substance

我正在使用Flamingo功能区和Substance Office 2007外观。

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

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

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

3 个答案:

答案 0 :(得分:9)

我刚刚发现:自Substance 5.0以后SKIN_PROPERTY可用。

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

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

答案 1 :(得分:2)

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

如果你想深入了解/java-look-and-feel-design-guidelines-second-edition

,这本书应该会很有用

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

修改

在此论坛帖子Thread中,我找到了以下说明

  

Swing使用Look&感觉(PLAF)。   PLF没有附加在每个JFrame上   水平。它们附加在每个VM上   水平。混合几乎是不可能的   PLAF在一个申请中。我有   看了几次尝试,都失败了。

答案 2 :(得分:1)

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