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

8
我正在使用Flamingo ribbon和Substance Office 2007外观。
当然,现在每个控件都有这种外观,甚至是对话框上的控件。
我想要的是类似于Office 2007中的情况,其中ribbons具有其Office 2007外观,但其他控件保持其本机Vista / XP外观。
是否可以为某些控件分配不同的外观?可能使用某种链接或代理外观吗?
3个回答

9
我刚发现:自 Substance 5.0以来, SKIN_PROPERTY已经可用。
它允许为不同的JRootPanes(即JDialogJFrameJInternalFrame)分配不同的皮肤。
一个小技巧:我重写了JInternalFrame以去除额外的边框和标题栏,使其看起来就像是一个无边框面板。这样可以创建印象,表单/对话框的不同部分具有不同的外观。

2
这里有一个库,可以自动改变外观和感觉。我不确定是否每个组件都会以不同的方式完成,但您应该看一下。 pbjar.org 如果您想深入了解外观和感觉,这本书应该很有用。 /java-look-and-feel-design-guidelines-second-edition 如果有人能编写代码示例,我会很高兴看到。请随意开始。
编辑:
在这个论坛主题中Thread,我发现了以下描述
Swing使用外观(PLAF)。 PLAFs不是按每个JFrame级别附加的。它们是按每个VM级别附加的。几乎不可能在一个应用程序中混合PLAF。我见过几次尝试,全部失败。

实际上是按照AppContext进行的。您应该能够在不同站点上安装有不同PL&F的小程序。 - Tom Hawtin - tackline

1

遗憾的是,Swing 在幕后做了很多“伪全局”的事情。据我所知,唯一保持一致性的方法是使用私有的 AppContext API。每个 AppContext 都有自己的事件分派线程和其他“伪全局”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接