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

📄 synthspinnerui.java

📁 Mobile 应用程序使用 Java Micro Edition (Java ME) 平台
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)SynthSpinnerUI.java	1.17 07/12/07 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package javax.swing.plaf.synth;import java.awt.*;import java.awt.event.*;import java.text.ParseException;import javax.swing.*;import javax.swing.event.*;import javax.swing.plaf.*;import javax.swing.plaf.basic.BasicSpinnerUI;import javax.swing.text.*;import java.beans.*;import java.text.*;import java.util.*;import sun.swing.plaf.synth.SynthUI;/** * Synth's SpinnerUI. * * @version 1.17, 12/07/07 * @author Hans Muller * @author Joshua Outwater */class SynthSpinnerUI extends BasicSpinnerUI implements PropertyChangeListener,        SynthUI {    private SynthStyle style;    /**     * A FocusListener implementation which causes the entire spinner to be     * repainted whenever the editor component (typically a text field) becomes     * focused, or loses focus. This is necessary because since SynthSpinnerUI     * is composed of an editor and two buttons, it is necessary that all three     * components indicate that they are "focused" so that they can be drawn     * appropriately. The repaint is used to ensure that the buttons are drawn     * in the new focused or unfocused state, mirroring that of the editor.     */    private EditorFocusHandler editorFocusHandler = new EditorFocusHandler();    /**     * Returns a new instance of SynthSpinnerUI.       *      * @param c the JSpinner (not used)     * @see ComponentUI#createUI     * @return a new SynthSpinnerUI object     */    public static ComponentUI createUI(JComponent c) {        return new SynthSpinnerUI();    }    protected void installListeners() {        super.installListeners();        spinner.addPropertyChangeListener(this);        JComponent editor = spinner.getEditor();        if (editor instanceof JSpinner.DefaultEditor) {            JTextField tf = ((JSpinner.DefaultEditor)editor).getTextField();            if (tf != null) {                tf.addFocusListener(editorFocusHandler);            }        }    }    /**     * Removes the <code>propertyChangeListener</code> added     * by installListeners.     * <p>     * This method is called by <code>uninstallUI</code>.     *      * @see #installListeners     */    protected void uninstallListeners() {        super.uninstallListeners();        spinner.removePropertyChangeListener(this);        JComponent editor = spinner.getEditor();        if (editor instanceof JSpinner.DefaultEditor) {            JTextField tf = ((JSpinner.DefaultEditor)editor).getTextField();            if (tf != null) {                tf.removeFocusListener(editorFocusHandler);            }        }    }    /**     * Initialize the <code>JSpinner</code> <code>border</code>,      * <code>foreground</code>, and <code>background</code>, properties      * based on the corresponding "Spinner.*" properties from defaults table.       * The <code>JSpinners</code> layout is set to the value returned by     * <code>createLayout</code>.  This method is called by <code>installUI</code>.     *     * @see #uninstallDefaults     * @see #installUI     * @see #createLayout     * @see LookAndFeel#installBorder     * @see LookAndFeel#installColors     */    protected void installDefaults() {        LayoutManager layout = spinner.getLayout();        if (layout == null || layout instanceof UIResource) {            spinner.setLayout(createLayout());        }        updateStyle(spinner);    }    private void updateStyle(JSpinner c) {        SynthContext context = getContext(c, ENABLED);        SynthStyle oldStyle = style;        style = SynthLookAndFeel.updateStyle(context, this);        if (style != oldStyle) {            if (oldStyle != null) {                // Only call installKeyboardActions as uninstall is not                // public.                installKeyboardActions();            }        }        context.dispose();    }    /**     * Sets the <code>JSpinner's</code> layout manager to null.  This     * method is called by <code>uninstallUI</code>.     *      * @see #installDefaults     * @see #uninstallUI     */    protected void uninstallDefaults() {        if (spinner.getLayout() instanceof UIResource) {            spinner.setLayout(null);        }        SynthContext context = getContext(spinner, ENABLED);        style.uninstallDefaults(context);        context.dispose();        style = null;    }    protected LayoutManager createLayout() {        return new SpinnerLayout();    }    /**     * Create a component that will replace the spinner models value     * with the object returned by <code>spinner.getPreviousValue</code>.     * By default the <code>previousButton</code> is a JButton     * who's <code>ActionListener</code> updates it's <code>JSpinner</code>     * ancestors model.  If a previousButton isn't needed (in a subclass)     * then override this method to return null.     *     * @return a component that will replace the spinners model with the     *     next value in the sequence, or null     * @see #installUI     * @see #createNextButton     */    protected Component createPreviousButton() {        JButton b = new SpinnerArrowButton(SwingConstants.SOUTH);        b.setName("Spinner.previousButton");        installPreviousButtonListeners(b);        return b;    }    /**     * Create a component that will replace the spinner models value     * with the object returned by <code>spinner.getNextValue</code>.     * By default the <code>nextButton</code> is a JButton     * who's <code>ActionListener</code> updates it's <code>JSpinner</code>     * ancestors model.  If a nextButton isn't needed (in a subclass)     * then override this method to return null.     *     * @return a component that will replace the spinners model with the     *     next value in the sequence, or null     * @see #installUI     * @see #createPreviousButton     */    protected Component createNextButton() {        JButton b = new SpinnerArrowButton(SwingConstants.NORTH);        b.setName("Spinner.nextButton");        installNextButtonListeners(b);        return b;    }    /**     * This method is called by installUI to get the editor component     * of the <code>JSpinner</code>.  By default it just returns      * <code>JSpinner.getEditor()</code>.  Subclasses can override     * <code>createEditor</code> to return a component that contains      * the spinner's editor or null, if they're going to handle adding      * the editor to the <code>JSpinner</code> in an      * <code>installUI</code> override.     * <p>     * Typically this method would be overridden to wrap the editor     * with a container with a custom border, since one can't assume     * that the editors border can be set directly.       * <p>     * The <code>replaceEditor</code> method is called when the spinners     * editor is changed with <code>JSpinner.setEditor</code>.  If you've     * overriden this method, then you'll probably want to override     * <code>replaceEditor</code> as well.     *      * @return the JSpinners editor JComponent, spinner.getEditor() by default     * @see #installUI     * @see #replaceEditor     * @see JSpinner#getEditor     */    protected JComponent createEditor() {        JComponent editor = spinner.getEditor();        editor.setName("Spinner.editor");        updateEditorAlignment(editor);        return editor;    }    /**     * Called by the <code>PropertyChangeListener</code> when the      * <code>JSpinner</code> editor property changes.  It's the responsibility      * of this method to remove the old editor and add the new one.  By     * default this operation is just:     * <pre>     * spinner.remove(oldEditor);     * spinner.add(newEditor, "Editor");     * </pre>     * The implementation of <code>replaceEditor</code> should be coordinated

⌨️ 快捷键说明

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