Daniel Rikowski
Daniel Rikowski

Reputation: 72544

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

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?

Upvotes: 8

Views: 2023

Answers (3)

Daniel Rikowski
Daniel Rikowski

Reputation: 72544

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.

Upvotes: 9

Tom Hawtin - tackline
Tom Hawtin - tackline

Reputation: 147164

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".

Upvotes: 1

Markus Lausberg
Markus Lausberg

Reputation: 12267

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.

Upvotes: 2

Related Questions