Can I use two different look and feels in the same Swing application?
Asked Answered
G

3

8

I'm using the Flamingo ribbon and the Substance Office 2007 look and feel.

Of course now every control has this look and feel, even those on dialog boxes.

What I want is something like in Office 2007, where the ribbons have their Office 2007 look, but other controls keep their native Vista/XP look.

Is it possible to assign certain controls a different look and feel? Perhaps using some kind of chaining or a proxy look and feel?

Godinez answered 15/1, 2009 at 8:47 Comment(0)
G
9

I just discovered: Since Substance 5.0 the SKIN_PROPERTY is available.

It allows assigning different skins to different JRootPanes (i.e. JDialog, JFrame, JInternalFrame)

A little trick: I override JInternalFrame to remove the extra border and the title pane so that it looks just like a borderless panel. That way it is possible to create the impression, that different parts of a form/dialog have different looks.

Godinez answered 5/3, 2009 at 10:15 Comment(0)
B
2

Here is a library which will automaticaly change the look and feel. I am not sure it this will done for every component in a different way, but you should take a look at it. pbjar.org

This book should be useful if you want to go deep into look and feel /java-look-and-feel-design-guidelines-second-edition

I would be glad to see some code example, if someone can write it, feel free to get starting.

EDIT:

In this forum thread Thread i found the following description

Swing uses a Look & Feel (a PLAF). PLAFs aren't attached on a per-JFrame level. They are attached on a per-VM level. It is almost impossible to mix PLAFs within one application. I have seen a few attempts, all failed.

Blinkers answered 15/1, 2009 at 9:48 Comment(1)
It's actually per-AppContext. You should be able to have applets on different sites having different PL&Fs installed.Belfast
B
1

Swing unfortunately does lots of "psuedo-global" things behind the scenes. AFAIK, the only way to do it consistently is to use the private AppContext API. Each AppContext has its own event dispatch thread and other "psuedo-globals".

Belfast answered 15/1, 2009 at 14:23 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.