⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metaltitlepane.java

📁 Mobile 应用程序使用 Java Micro Edition (Java ME) 平台
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * @(#)MetalTitlePane.java	1.22 06/07/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package javax.swing.plaf.metal;import sun.swing.SwingUtilities2;import sun.awt.SunToolkit;import java.awt.*;import java.awt.event.*;import java.beans.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.event.InternalFrameEvent;import javax.swing.plaf.*;import javax.swing.plaf.basic.*;import java.util.Locale;import javax.accessibility.*;/** * Class that manages a JLF awt.Window-descendant class's title bar.   * <p> * This class assumes it will be created with a particular window * decoration style, and that if the style changes, a new one will * be created. * * @version 1.22 07/17/06 * @author Terry Kellerman * @since 1.4 */class MetalTitlePane extends JComponent {    private static final Border handyEmptyBorder = new EmptyBorder(0,0,0,0);    private static final int IMAGE_HEIGHT = 16;    private static final int IMAGE_WIDTH = 16;    /**     * PropertyChangeListener added to the JRootPane.     */    private PropertyChangeListener propertyChangeListener;    /**     * JMenuBar, typically renders the system menu items.     */    private JMenuBar menuBar;    /**     * Action used to close the Window.     */    private Action closeAction;    /**     * Action used to iconify the Frame.     */    private Action iconifyAction;    /**     * Action to restore the Frame size.     */    private Action restoreAction;    /**     * Action to restore the Frame size.     */    private Action maximizeAction;    /**     * Button used to maximize or restore the Frame.     */    private JButton toggleButton;    /**     * Button used to maximize or restore the Frame.     */    private JButton iconifyButton;    /**     * Button used to maximize or restore the Frame.     */    private JButton closeButton;    /**     * Icon used for toggleButton when window is normal size.     */    private Icon maximizeIcon;    /**     * Icon used for toggleButton when window is maximized.     */    private Icon minimizeIcon;    /**     * Image used for the system menu icon     */    private Image systemIcon;    /**     * Listens for changes in the state of the Window listener to update     * the state of the widgets.     */    private WindowListener windowListener;    /**     * Window we're currently in.     */    private Window window;    /**     * JRootPane rendering for.     */    private JRootPane rootPane;    /**     * Room remaining in title for bumps.     */    private int buttonsWidth;    /**     * Buffered Frame.state property. As state isn't bound, this is kept     * to determine when to avoid updating widgets.     */    private int state;    /**     * MetalRootPaneUI that created us.     */    private MetalRootPaneUI rootPaneUI;        // Colors    private Color inactiveBackground = UIManager.getColor("inactiveCaption");    private Color inactiveForeground = UIManager.getColor("inactiveCaptionText");    private Color inactiveShadow = UIManager.getColor("inactiveCaptionBorder");    private Color activeBumpsHighlight = MetalLookAndFeel.getPrimaryControlHighlight();    private Color activeBumpsShadow = MetalLookAndFeel.getPrimaryControlDarkShadow();    private Color activeBackground = null;    private Color activeForeground = null;    private Color activeShadow = null;    // Bumps    private MetalBumps activeBumps         = new MetalBumps( 0, 0,                          activeBumpsHighlight,                          activeBumpsShadow,                          MetalLookAndFeel.getPrimaryControl() );    private MetalBumps inactiveBumps         = new MetalBumps( 0, 0,                          MetalLookAndFeel.getControlHighlight(),                          MetalLookAndFeel.getControlDarkShadow(),                          MetalLookAndFeel.getControl() );    public MetalTitlePane(JRootPane root, MetalRootPaneUI ui) {        this.rootPane = root;        rootPaneUI = ui;        state = -1;        installSubcomponents();        determineColors();        installDefaults();        setLayout(createLayout());    }    /**     * Uninstalls the necessary state.     */    private void uninstall() {        uninstallListeners();        window = null;        removeAll();    }    /**     * Installs the necessary listeners.     */    private void installListeners() {        if (window != null) {            windowListener = createWindowListener();            window.addWindowListener(windowListener);            propertyChangeListener = createWindowPropertyChangeListener();            window.addPropertyChangeListener(propertyChangeListener);        }    }    /**     * Uninstalls the necessary listeners.     */    private void uninstallListeners() {        if (window != null) {            window.removeWindowListener(windowListener);            window.removePropertyChangeListener(propertyChangeListener);        }    }    /**     * Returns the <code>WindowListener</code> to add to the     * <code>Window</code>.     */    private WindowListener createWindowListener() {        return new WindowHandler();    }    /**     * Returns the <code>PropertyChangeListener</code> to install on     * the <code>Window</code>.     */    private PropertyChangeListener createWindowPropertyChangeListener() {        return new PropertyChangeHandler();    }    /**     * Returns the <code>JRootPane</code> this was created for.     */    public JRootPane getRootPane() {        return rootPane;    }    /**     * Returns the decoration style of the <code>JRootPane</code>.     */    private int getWindowDecorationStyle() {        return getRootPane().getWindowDecorationStyle();    }    public void addNotify() {        super.addNotify();        uninstallListeners();        window = SwingUtilities.getWindowAncestor(this);        if (window != null) {            if (window instanceof Frame) {                setState(((Frame)window).getExtendedState());            }            else {                setState(0);            }            setActive(window.isActive());            installListeners();            updateSystemIcon();        }    }    public void removeNotify() {        super.removeNotify();        uninstallListeners();        window = null;    }    /**     * Adds any sub-Components contained in the <code>MetalTitlePane</code>.     */    private void installSubcomponents() {        int decorationStyle = getWindowDecorationStyle();        if (decorationStyle == JRootPane.FRAME) {            createActions();            menuBar = createMenuBar();            add(menuBar);            createButtons();            add(iconifyButton);            add(toggleButton);            add(closeButton);        } else if (decorationStyle == JRootPane.PLAIN_DIALOG ||                decorationStyle == JRootPane.INFORMATION_DIALOG ||                decorationStyle == JRootPane.ERROR_DIALOG ||                decorationStyle == JRootPane.COLOR_CHOOSER_DIALOG ||                decorationStyle == JRootPane.FILE_CHOOSER_DIALOG ||                decorationStyle == JRootPane.QUESTION_DIALOG ||                decorationStyle == JRootPane.WARNING_DIALOG) {            createActions();            createButtons();            add(closeButton);        }    }    /**     * Determines the Colors to draw with.     */    private void determineColors() {        switch (getWindowDecorationStyle()) {        case JRootPane.FRAME:            activeBackground = UIManager.getColor("activeCaption");            activeForeground = UIManager.getColor("activeCaptionText");            activeShadow = UIManager.getColor("activeCaptionBorder");            break;        case JRootPane.ERROR_DIALOG:            activeBackground = UIManager.getColor(                "OptionPane.errorDialog.titlePane.background");            activeForeground = UIManager.getColor(                "OptionPane.errorDialog.titlePane.foreground");            activeShadow = UIManager.getColor(                "OptionPane.errorDialog.titlePane.shadow");            break;        case JRootPane.QUESTION_DIALOG:        case JRootPane.COLOR_CHOOSER_DIALOG:        case JRootPane.FILE_CHOOSER_DIALOG:            activeBackground = UIManager.getColor(                "OptionPane.questionDialog.titlePane.background");            activeForeground = UIManager.getColor(                "OptionPane.questionDialog.titlePane.foreground");            activeShadow = UIManager.getColor(                "OptionPane.questionDialog.titlePane.shadow");            break;        case JRootPane.WARNING_DIALOG:            activeBackground = UIManager.getColor(                "OptionPane.warningDialog.titlePane.background");            activeForeground = UIManager.getColor(                "OptionPane.warningDialog.titlePane.foreground");            activeShadow = UIManager.getColor(                "OptionPane.warningDialog.titlePane.shadow");            break;        case JRootPane.PLAIN_DIALOG:        case JRootPane.INFORMATION_DIALOG:        default:            activeBackground = UIManager.getColor("activeCaption");            activeForeground = UIManager.getColor("activeCaptionText");            activeShadow = UIManager.getColor("activeCaptionBorder");            break;        }        activeBumps.setBumpColors(activeBumpsHighlight, activeBumpsShadow,                                  activeBackground);    }    /**     * Installs the fonts and necessary properties on the MetalTitlePane.     */    private void installDefaults() {        setFont(UIManager.getFont("InternalFrame.titleFont", getLocale()));    }        /**     * Uninstalls any previously installed UI values.     */    private void uninstallDefaults() {    }    /**

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -