org.netbeans.swing.plaf.package.html Maven / Gradle / Ivy
The NetBeans look and feel customization library
This library installs custom values into UIDefaults, such as colors, borders and UI class names, which
various components in NetBeans use to provide a customized or native appearance.
NetBeans provides a number of custom components, such as the tabbed containers in its main window;
other components may look for custom colors - for example, the property sheet will look for a custom color
in UIDefaults to use for its margin and the background color of property set entries, in order that it may
be customized to match the UI specification for different platforms/look and feels.
This library centralizes the installation and setup of such custom values. It also:
- Handles the setup of custom font sizes for look and feels (other than GTK, which
gets its font sizes from the operating system theme), by replacing the font entries in UIDefaults with those
of the requested font size
- Allows UIDefaults values to be guaranteed to be present for look and feels (GTK) which do not
provide them, to enable older code that depends on such values being there (as they were for all look
and feels until JDK 1.4) to work without modification
- Handles loading of a theme file for those look and feels (Metal) that support MetalTheme
- Installs per-look-and-feel customizations needed to ensure a harmonious, native appearance on a
given look and feel
- Contains custom implementations of things like ToolbarUI for some platforms on which
NetBeans does not use the standard JDK implementation (GTK and Aqua).
Usage
An application using NetBeans tab control, window system, property sheet or some other component
of NetBeans, which wants to guarantee that the same colors and styles are used in their application as in
NetBeans, needs simply to call org.netbeans.swing.plaf.Startup.run()
early in its startup
sequence, as org.netbeans.core.Main
does.
A look and feel or application author who wishes to provide custom values for some thing can provide
an implementation of org.netbeans.swing.plaf.LFCustoms
, and place it in UIManager under
a key which contains the unique ID of the look and feel. See the documentation for LFCustoms for further
details of how to do this.
Another option is simply to provide values for the (quite self-explanatory) keys defined as static fields
of the LFCustoms class. The advantage to providing an implementation of LFCustoms is simply that those
values would not be loaded unless requested; either approach is equivalent.
Also, if a look and feel is designed to be an improvement on an existing platform-specific look and
feel (such as JGoodies for Windows or QuaQua for Apple), it may simply provide the appropriate existing
LFCustoms subclass name in UIDefaults, in accordance with the following:
Look and feel
UIManager key
Class name
Metal look and feel
Nb.MetalLFCustoms
org.netbeans.swing.plaf.metal.MetalLFCustoms
Windows classic look and feel
Nb.WindowsLFCustoms
org.netbeans.swing.plaf.winclassic.WindowsLFCustoms
Windows XP look and feel
Nb.WindowsXPLFCustoms
org.netbeans.swing.plaf.winxp.XPLFCustoms
Aqua look and feel (Mac)
Nb.AquaLFCustoms
org.netbeans.swing.plaf.aqua.AquaLFCustoms
GTK Look and Feel (Linux & Solaris) - JDK 1.5 and up
Nb.GTKLFCustoms
org.netbeans.swing.plaf.gtk.GtkLFCustoms
For details on the specific requirements and design of this library, see its
arch questions and answers.