亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? basicspinnerui.java

?? java1.6眾多例子參考
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/* * @(#)BasicSpinnerUI.java	1.28 06/04/10 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package javax.swing.plaf.basic;import java.awt.*;import java.awt.event.*;import java.text.ParseException;import javax.swing.*;import javax.swing.border.*;import javax.swing.event.*;import javax.swing.plaf.*;import javax.swing.text.*;import java.beans.*;import java.text.*;import java.util.*;import sun.swing.DefaultLookup;/** * The default Spinner UI delegate. * * @version 1.28 04/10/06 * @author Hans Muller * @since 1.4 */public class BasicSpinnerUI extends SpinnerUI{    /**     * The spinner that we're a UI delegate for.  Initialized by      * the <code>installUI</code> method, and reset to null     * by <code>uninstallUI</code>.     *      * @see #installUI     * @see #uninstallUI     */    protected JSpinner spinner;      private Handler handler;    /**     * The mouse/action listeners that are added to the spinner's      * arrow buttons.  These listeners are shared by all      * spinner arrow buttons.     *      * @see #createNextButton     * @see #createPreviousButton     */    private static final ArrowButtonHandler nextButtonHandler = new ArrowButtonHandler("increment", true);    private static final ArrowButtonHandler previousButtonHandler = new ArrowButtonHandler("decrement", false);    private PropertyChangeListener propertyChangeListener;    /**     * Used by the default LayoutManager class - SpinnerLayout for      * missing (null) editor/nextButton/previousButton children.     */    private static final Dimension zeroSize = new Dimension(0, 0);    /**     * Returns a new instance of BasicSpinnerUI.  SpinnerListUI      * delegates are allocated one per JSpinner.       *      * @param c the JSpinner (not used)     * @see ComponentUI#createUI     * @return a new BasicSpinnerUI object     */    public static ComponentUI createUI(JComponent c) {        return new BasicSpinnerUI();    }    private void maybeAdd(Component c, String s) {	if (c != null) {	    spinner.add(c, s);	}    }    /**     * Calls <code>installDefaults</code>, <code>installListeners</code>,     * and then adds the components returned by <code>createNextButton</code>,     * <code>createPreviousButton</code>, and <code>createEditor</code>.     *      * @param c the JSpinner     * @see #installDefaults     * @see #installListeners     * @see #createNextButton     * @see #createPreviousButton     * @see #createEditor     */    public void installUI(JComponent c) {	this.spinner = (JSpinner)c;	installDefaults();	installListeners();	maybeAdd(createNextButton(), "Next");	maybeAdd(createPreviousButton(), "Previous");	maybeAdd(createEditor(), "Editor");        updateEnabledState();        installKeyboardActions();    }    /**     * Calls <code>uninstallDefaults</code>, <code>uninstallListeners</code>,     * and then removes all of the spinners children.     *      * @param c the JSpinner (not used)     */    public void uninstallUI(JComponent c) {	uninstallDefaults();	uninstallListeners();	this.spinner = null;	c.removeAll();    }        /**     * Initializes <code>PropertyChangeListener</code> with      * a shared object that delegates interesting PropertyChangeEvents     * to protected methods.     * <p>     * This method is called by <code>installUI</code>.     *      * @see #replaceEditor     * @see #uninstallListeners     */    protected void installListeners() {        propertyChangeListener = createPropertyChangeListener();        spinner.addPropertyChangeListener(propertyChangeListener);	if (DefaultLookup.getBoolean(spinner, this,	    "Spinner.disableOnBoundaryValues", false)) {	    spinner.addChangeListener(getHandler());	}	JComponent editor = spinner.getEditor();	if (editor != null && editor instanceof JSpinner.DefaultEditor) {	    JTextField tf = ((JSpinner.DefaultEditor)editor).getTextField();	    if (tf != null) {		tf.addFocusListener(nextButtonHandler);		tf.addFocusListener(previousButtonHandler);	    }	}    }    /**     * Removes the <code>PropertyChangeListener</code> added     * by installListeners.     * <p>     * This method is called by <code>uninstallUI</code>.     *      * @see #installListeners     */    protected void uninstallListeners() {	spinner.removePropertyChangeListener(propertyChangeListener);	spinner.removeChangeListener(handler);	JComponent editor = spinner.getEditor();	removeEditorBorderListener(editor);	if (editor instanceof JSpinner.DefaultEditor) {	    JTextField tf = ((JSpinner.DefaultEditor)editor).getTextField();	    if (tf != null) {		tf.removeFocusListener(nextButtonHandler);		tf.removeFocusListener(previousButtonHandler);	    }	}        propertyChangeListener = null;        handler = null;    }    /**     * 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() {	spinner.setLayout(createLayout());        LookAndFeel.installBorder(spinner, "Spinner.border");        LookAndFeel.installColorsAndFont(spinner, "Spinner.background", "Spinner.foreground", "Spinner.font");        LookAndFeel.installProperty(spinner, "opaque", Boolean.TRUE);    }    /**     * 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() {	spinner.setLayout(null);    }    private Handler getHandler() {        if (handler == null) {            handler = new Handler();        }        return handler;    }    /**     * Installs the necessary listeners on the next button, <code>c</code>,     * to update the <code>JSpinner</code> in response to a user gesture.     *     * @param c Component to install the listeners on     * @throws NullPointerException if <code>c</code> is null.     * @see #createNextButton     * @since 1.5     */    protected void installNextButtonListeners(Component c) {        installButtonListeners(c, nextButtonHandler);    }    /**     * Installs the necessary listeners on the previous button, <code>c</code>,     * to update the <code>JSpinner</code> in response to a user gesture.     *     * @param c Component to install the listeners on.     * @throws NullPointerException if <code>c</code> is null.     * @see #createPreviousButton     * @since 1.5     */    protected void installPreviousButtonListeners(Component c) {        installButtonListeners(c, previousButtonHandler);    }    private void installButtonListeners(Component c,                                        ArrowButtonHandler handler) {        if (c instanceof JButton) {            ((JButton)c).addActionListener(handler);        }        c.addMouseListener(handler);    }    /**     * Create a <code>LayoutManager</code> that manages the <code>editor</code>,      * <code>nextButton</code>, and <code>previousButton</code>      * children of the JSpinner.  These three children must be     * added with a constraint that identifies their role:      * "Editor", "Next", and "Previous". The default layout manager      * can handle the absence of any of these children.     *      * @return a LayoutManager for the editor, next button, and previous button.     * @see #createNextButton     * @see #createPreviousButton     * @see #createEditor     */    protected LayoutManager createLayout() {        return getHandler();    }    /**     * Create a <code>PropertyChangeListener</code> that can be     * added to the JSpinner itself.  Typically, this listener     * will call replaceEditor when the "editor" property changes,      * since it's the <code>SpinnerUI's</code> responsibility to      * add the editor to the JSpinner (and remove the old one).     * This method is called by <code>installListeners</code>.     *      * @return A PropertyChangeListener for the JSpinner itself     * @see #installListeners     */    protected PropertyChangeListener createPropertyChangeListener() {        return getHandler();    }    /**     * 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. This     * method invokes <code>installPreviousButtonListeners</code> to     * install the necessary listeners to update the <code>JSpinner</code>'s     * model in response to a user gesture. 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     * @see #installPreviousButtonListeners     */    protected Component createPreviousButton() {	Component c = createArrowButton(SwingConstants.SOUTH);        c.setName("Spinner.previousButton");        installPreviousButtonListeners(c);        return c;    }    /**     * 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     * @see #installNextButtonListeners     */    protected Component createNextButton() {	Component c = createArrowButton(SwingConstants.NORTH);        c.setName("Spinner.nextButton");        installNextButtonListeners(c);        return c;    }    private Component createArrowButton(int direction) {	JButton b = new BasicArrowButton(direction);	Border buttonBorder = UIManager.getBorder("Spinner.arrowButtonBorder");	if (buttonBorder instanceof UIResource) {	    // Wrap the border to avoid having the UIResource be replaced by	    // the ButtonUI. This is the opposite of using BorderUIResource.	    b.setBorder(new CompoundBorder(buttonBorder, null));	} else {	    b.setBorder(buttonBorder);	}        b.setInheritsPopupMenu(true);	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 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
proumb性欧美在线观看| 国产精品私人自拍| 久久一区二区三区四区| 亚洲综合色在线| 日本韩国精品在线| 精品久久久久久久久久久院品网| 中文字幕一区二区视频| 久久国产精品露脸对白| 欧美三电影在线| 亚洲欧美综合另类在线卡通| 激情久久久久久久久久久久久久久久| 99国内精品久久| 中文字幕成人网| 国产主播一区二区| 精品美女在线观看| 另类中文字幕网| 日韩午夜av一区| 天堂va蜜桃一区二区三区| 欧美在线观看视频一区二区三区| 欧美极品xxx| 国产精品一区二区在线观看网站| 日韩一区二区三区电影在线观看 | 亚洲国产乱码最新视频 | 国产欧美一区二区精品忘忧草| 日韩—二三区免费观看av| 欧美三级电影精品| 天天综合网 天天综合色| 日本韩国欧美在线| 亚洲综合自拍偷拍| 欧美手机在线视频| 亚洲成精国产精品女| 日本韩国欧美三级| 亚洲mv在线观看| 日韩精品一区二| 国产呦精品一区二区三区网站| 日韩精品一区二区三区四区视频 | 色婷婷av一区二区三区大白胸| 中文字幕亚洲综合久久菠萝蜜| 成人一区二区视频| 成人欧美一区二区三区| 色综合久久久久久久久| 五月婷婷综合在线| 日韩一区二区三区电影在线观看 | 93久久精品日日躁夜夜躁欧美| 中文字幕亚洲精品在线观看| kk眼镜猥琐国模调教系列一区二区| 国产精品视频一二三区 | 国产麻豆精品一区二区| 日本一区二区三区在线不卡| 国产高清在线精品| 亚洲激情综合网| 日韩欧美精品三级| 国产在线播放一区二区三区| 中文欧美字幕免费| 在线亚洲一区观看| 亚洲午夜视频在线| 国产成+人+日韩+欧美+亚洲| 欧美α欧美αv大片| 久久亚洲一区二区三区四区| 国产性色一区二区| 日韩黄色片在线观看| 国产一区三区三区| 91在线观看高清| 日韩欧美一二区| 亚洲伦在线观看| 99视频在线观看一区三区| 欧美剧在线免费观看网站| 亚洲高清不卡在线观看| 日韩欧美亚洲另类制服综合在线| 高清成人免费视频| 日韩和欧美的一区| 国产精品传媒入口麻豆| 欧美精品三级日韩久久| 成人av在线电影| 日本欧美一区二区| 国产亚洲视频系列| 91精品国产一区二区三区香蕉| 国产一区二区女| 午夜精品久久久久久久蜜桃app| 久久亚洲捆绑美女| 欧美日韩三级在线| 粉嫩久久99精品久久久久久夜| 五月天激情综合网| 国产欧美日韩三级| 在线综合视频播放| 在线观看国产91| 北条麻妃一区二区三区| 久久99精品国产91久久来源| 亚洲一二三区不卡| 中文字幕一区二区三| 久久婷婷色综合| 欧美成人福利视频| 在线播放国产精品二区一二区四区| 粉嫩绯色av一区二区在线观看 | 日韩一区二区在线免费观看| 99v久久综合狠狠综合久久| 国内外成人在线视频| 日韩主播视频在线| 亚洲一级在线观看| 亚洲精品日日夜夜| 中文字幕视频一区| 中文字幕免费不卡在线| 国产欧美视频在线观看| 欧美日韩不卡一区二区| 欧美在线视频不卡| 日本高清免费不卡视频| av中文字幕不卡| 91亚洲精品久久久蜜桃| www.在线成人| 不卡视频在线看| 99精品国产视频| 97久久精品人人澡人人爽| 丁香亚洲综合激情啪啪综合| 国产成人免费高清| 不卡一二三区首页| 99re成人在线| 91黄视频在线观看| 欧美日韩一二三| 日韩亚洲电影在线| 精品国产伦一区二区三区观看体验| 日韩欧美中文字幕制服| www激情久久| 日本一区二区免费在线| 国产精品乱人伦| 国产精品福利一区二区| 亚洲欧洲中文日韩久久av乱码| 亚洲乱码精品一二三四区日韩在线| 中文字幕佐山爱一区二区免费| 日韩理论在线观看| 亚洲18女电影在线观看| 日韩精品一级中文字幕精品视频免费观看 | 亚洲1区2区3区4区| 蜜臀av国产精品久久久久 | 久久久久青草大香线综合精品| 中文子幕无线码一区tr| 91高清在线观看| 欧美综合视频在线观看| 91精品国产色综合久久| 精品久久久网站| 色天使色偷偷av一区二区| 欧美精品视频www在线观看| 日韩久久精品一区| |精品福利一区二区三区| 亚洲一区在线免费观看| 久久99久久99小草精品免视看| 国产成人免费视频一区| 色菇凉天天综合网| 2023国产精品视频| 亚洲精品欧美在线| 亚洲成av人片在www色猫咪| 国产乱国产乱300精品| 色欧美片视频在线观看在线视频| 欧美日本在线视频| 日本一区二区三区高清不卡| 亚洲主播在线播放| 国产一区二区不卡在线| 在线观看日韩高清av| 国产亚洲精品bt天堂精选| 亚洲高清免费观看| 99久久精品国产导航| 日韩欧美国产一区二区在线播放| 最新国产精品久久精品| 久久国产乱子精品免费女| 91黄色激情网站| 久久麻豆一区二区| 午夜电影久久久| 99久久精品情趣| 2023国产精品视频| 日本中文字幕一区二区有限公司| 91小视频在线观看| 国产亚洲一二三区| 日本中文一区二区三区| 色哟哟一区二区| 日本一区二区不卡视频| 久久99蜜桃精品| 欧美日韩精品一二三区| 国产精品热久久久久夜色精品三区| 日韩 欧美一区二区三区| 欧洲视频一区二区| 亚洲精品菠萝久久久久久久| 国产电影精品久久禁18| 欧美tk—视频vk| 麻豆国产欧美日韩综合精品二区| 在线亚洲人成电影网站色www| 国产目拍亚洲精品99久久精品| 另类欧美日韩国产在线| 91精品中文字幕一区二区三区| 亚洲国产精品久久人人爱蜜臀| 成人美女在线视频| 中文一区一区三区高中清不卡| 狠狠狠色丁香婷婷综合激情 | 色狠狠色噜噜噜综合网| 中文字幕亚洲成人| 成人白浆超碰人人人人| 欧美国产乱子伦| 成人爽a毛片一区二区免费| 久久久精品欧美丰满| 韩国视频一区二区| 精品999在线播放| 精品一区二区日韩|