<Swing Dev> Background/Foreground colors and Gtk Look and Feel
Mike Swingler
swingler at apple.com
Fri Jan 23 00:23:49 UTC 2009
On Jan 22, 2009, at 1:21 PM, Joel Uckelman wrote:
> Hi,
>
> I'm the guy who reported the bug which Omair was referring to. The
> context
> in which in which I noticed that the GTK L&F ignores setBackground()
> is
> that I was subclassing JTextPane in order to get a label which would
> support
> both word wrap and full justification of text. In this case, the
> correct
> background color is really not what the theme thinks the background
> color
> should be for a JTextPane, but rather what the theme thinks the
> background
> color should be for a JLabel.
In this case, Aqua actually implements it's background as a border,
and by setting that border to null, we turn off both the text field
edge as well as the default white background. If someone just sets a
background color on our JTextFields, with simply do a fillRect() with
that color inside of the Aqua edges (and it looks terrible). Most of
the time, when folks are trying to create a multi-line label, they
null out the border too, so we catch those cases most of the time.
> This kind of policy makes the uses to which components can be put
> very narrow
> if you're using a native L&F. To be clear: What I want to achieve is
> to have
> this component of mine to have the same background color as a
> JLabel, because
> it *is* functionally a JLabel, despite that it inherits from
> JTextPane. I'm not
> trying to circumvent the color scheme provided by the L&F here, I'm
> trying to
> follow it---so it's very disheartening to read the replies on this
> thread.
Well, this all begs for a more powerful JLabel...but I digress.
> If the intended behavior of native L&Fs is to ignore
> setBackground(), then
> what's the right way to do what I'm trying to do?
You might want to replace that component's peer with the
BasicTextPaneUI or another known UI delegate, since you are stripping
all the usual adornments off of it anyway. I fear that might reset
some things like ctrl-C vs. meta-C for copy (if you allow selection),
but all the other adornments like the Caret, or keybindings probably
aren't relevant, since this won't be editable.
Best of luck,
Mike Swingler
Java Runtime Engineer
Apple Inc.
More information about the swing-dev
mailing list