jdk/src/java.desktop/share/classes/javax/swing/plaf/nimbus/package-info.java
author serb
Fri, 21 Jul 2017 16:27:35 -0700
changeset 47160 ac5434728c3b
parent 44140 68a53e891236
child 46847 3720a014bb74
permissions -rw-r--r--
8134256: copy/paste duplicated tests in some condition statements Reviewed-by: azvegint

/*
 * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/**
 * Provides user interface objects built according to the cross-platform Nimbus
 * look and feel.
 * <p>
 * Nimbus uses instances of the {@link javax.swing.Painter} interface to paint
 * components. With each Swing component it associates a foreground and a
 * background {@code Painter}, and there may be several painters for different
 * component states.
 * <p>
 * Nimbus allows customizing many of its properties, including painters, by
 * altering the {@link javax.swing.UIDefaults} table. Here's an example:
 * <pre>
 * UIManager.put("ProgressBar.tileWidth", myTileWidth);
 * UIManager.put("ProgressBar[Enabled].backgroundPainter", myBgPainter);
 * UIManager.put("ProgressBar[Enabled].foregroundPainter", myFgPainter);
 * </pre>
 * <p>
 * Per-component customization is also possible. When rendering a component,
 * Nimbus checks its client property named "Nimbus.Overrides". The value of this
 * property should be an instance of {@code UIDefaults}. Settings from that
 * table override the UIManager settings, but for that particular component
 * instance only. An optional client property,
 * "Nimbus.Overrides.InheritDefaults" of type Boolean, specifies whether the
 * overriding settings should be merged with default ones ({@code true}), or
 * replace them ({@code false}). By default they are merged:
 * <pre>
 * JProgressBar bar = new JProgressBar();
 * UIDefaults overrides = new UIDefaults();
 * overrides.put("ProgressBar.cycleTime", 330);
 * ...
 * bar.putClientProperty("Nimbus.Overrides", overrides);
 * bar.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
 * </pre>
 * <p>
 * Colors in Nimbus are derived from a core set of
 * <a href="doc-files/properties.html#primaryColors">primary colors</a>. There
 * are also
 * <a href="doc-files/properties.html#secondaryColors">secondary colors</a>,
 * which are derived from primary ones, but serve themselves as base colors for
 * other derived colors. The derivation mechanism allows for runtime
 * customization, i.e. if a primary or secondary color is changed, all colors
 * that are derived from it are automatically updated. The method
 * {@link javax.swing.plaf.nimbus.NimbusLookAndFeel#getDerivedColor(java.lang.String, float, float, float, int, boolean)}
 * may be used to create a derived color.
 * <p>
 * These classes are designed to be used while the corresponding
 * {@code LookAndFeel} class has been installed
 * (<code>UIManager.setLookAndFeel(new <i>XXX</i>LookAndFeel())</code>).
 * Using them while a different {@code LookAndFeel} is installed may produce
 * unexpected results, including exceptions. Additionally, changing the
 * {@code LookAndFeel} maintained by the {@code UIManager} without updating the
 * corresponding {@code ComponentUI} of any {@code JComponent}s may also produce
 * unexpected results, such as the wrong colors showing up, and is generally not
 * encouraged.
 * <p>
 * <strong>Note:</strong>
 * Most of the Swing API is <em>not</em> thread safe. For details, see
 * <a
 * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
 * target="_top">Concurrency in Swing</a>,
 * a section in
 * <em><a href="http://docs.oracle.com/javase/tutorial/"
 * target="_top">The Java Tutorial</a></em>.
 *
 * @since 1.7
 * @serial exclude
 */
package javax.swing.plaf.nimbus;