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

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

?? jtextcomponentadapterprovider.java

?? java屬性邦定的(JSR-295)的一個實現
?? JAVA
字號:
/*
 * Copyright (C) 2006-2007 Sun Microsystems, Inc. All rights reserved. Use is
 * subject to license terms.
 */

package org.jdesktop.swingbinding.adapters;

import java.beans.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.text.*;
import org.jdesktop.beansbinding.ext.BeanAdapterProvider;

/**
 * @author Shannon Hickey
 */
public final class JTextComponentAdapterProvider implements BeanAdapterProvider {

    private static final String PROPERTY_BASE = "text";
    private static final String ON_ACTION_OR_FOCUS_LOST = PROPERTY_BASE + "_ON_ACTION_OR_FOCUS_LOST";
    private static final String ON_FOCUS_LOST = PROPERTY_BASE + "_ON_FOCUS_LOST";

    public final class Adapter extends BeanAdapterBase {
        private JTextComponent component;
        private Document document;
        private boolean inDocumentListener;
        private boolean installedFilter;
        private String cachedText;
        private Handler handler;

        private Adapter(JTextComponent component, String property) {
            super(property);
            this.component = component;
        }

        public String getText() {
            return component.getText();
        }

        public String getText_ON_ACTION_OR_FOCUS_LOST() {
            return getText();
        }

        public String getText_ON_FOCUS_LOST() {
            return getText();
        }

        public void setText(String text) {
            component.setText(text);
            component.setCaretPosition(0);
            cachedText = text;
        }

        public void setText_ON_ACTION_OR_FOCUS_LOST(String text) {
            setText(text);
        }

        public void setText_ON_FOCUS_LOST(String text) {
            setText(text);
        }
        
        protected void listeningStarted() {
            cachedText = component.getText();
            handler = new Handler();
            component.addPropertyChangeListener("document", handler);

            if (property != PROPERTY_BASE) {
                component.addFocusListener(handler);
            }

            if (property == ON_ACTION_OR_FOCUS_LOST && component instanceof JTextField) {
                ((JTextField)component).addActionListener(handler);
            }

            document = component.getDocument();
            installDocumentListener();
            
        }
        
        protected void listeningStopped() {
            cachedText = null;
            component.removePropertyChangeListener("document", handler);
            
            if (property != PROPERTY_BASE) {
                component.removeFocusListener(handler);
            }
            
            if (property == ON_ACTION_OR_FOCUS_LOST && (component instanceof JTextField)) {
                ((JTextField)component).removeActionListener(handler);
            }

            uninstallDocumentListener();
            document = null;
            handler = null;
        }

        private void installDocumentListener() {
            if (property != PROPERTY_BASE) {
                return;
            }

            boolean useDocumentFilter = !(component instanceof JFormattedTextField);
            
            if (useDocumentFilter && (document instanceof AbstractDocument) &&
                    ((AbstractDocument)document).getDocumentFilter() == null) {
                ((AbstractDocument)document).setDocumentFilter(handler);
                installedFilter = true;
            } else {
                document.addDocumentListener(handler);
                installedFilter = false;
            }
        }
        
        private void uninstallDocumentListener() {
            if (property != PROPERTY_BASE) {
                return;
            }

            if (installedFilter) {
                AbstractDocument ad = (AbstractDocument)document;
                if (ad.getDocumentFilter() == handler) {
                    ad.setDocumentFilter(null);
                }
            } else {
                document.removeDocumentListener(handler);
            }
        }

        private class Handler extends DocumentFilter implements ActionListener, DocumentListener,
                FocusListener, PropertyChangeListener {

            private void updateText() {
                Object oldText = cachedText;
                cachedText = getText();
                firePropertyChange(oldText, cachedText);
            }

            private void documentTextChanged() {
                try {
                    inDocumentListener = true;
                    textChanged();
                } finally {
                    inDocumentListener = false;
                }
            }
            
            private void textChanged() {
                updateText();
            }
            
            public void propertyChange(PropertyChangeEvent pce) {
                uninstallDocumentListener();
                document = component.getDocument();
                installDocumentListener();
                updateText();
            }
            
            public void actionPerformed(ActionEvent e) {
                updateText();
            }

            public void focusLost(FocusEvent e) {
                if (!e.isTemporary()) {
                    updateText();
                }
            }
            
            public void insertUpdate(DocumentEvent e) {
                documentTextChanged();
            }
            
            public void removeUpdate(DocumentEvent e) {
                documentTextChanged();
            }
            
            public void replace(DocumentFilter.FilterBypass fb, int offset,
                    int length, String text, AttributeSet attrs)
                    throws BadLocationException {
                
                super.replace(fb, offset, length, text, attrs);
                textChanged();
            }
            
            public void insertString(DocumentFilter.FilterBypass fb, int offset,
                                     String string, AttributeSet attr) throws BadLocationException {

                super.insertString(fb, offset, string, attr);
                textChanged();
            }
            
            public void remove(DocumentFilter.FilterBypass fb, int offset, int length) throws BadLocationException {
                super.remove(fb, offset, length);
                textChanged();
            }

            public void focusGained(FocusEvent e) {}
            public void changedUpdate(DocumentEvent e) {}
        }
        
    }
    
    public boolean providesAdapter(Class<?> type, String property) {
        if (!JTextComponent.class.isAssignableFrom(type)) {
            return false;
        }

        property = property.intern();

        return property == PROPERTY_BASE ||
               property == ON_ACTION_OR_FOCUS_LOST ||
               property == ON_FOCUS_LOST;
                 
    }
    
    public Object createAdapter(Object source, String property) {
        if (!providesAdapter(source.getClass(), property)) {
            throw new IllegalArgumentException();
        }
        
        return new Adapter((JTextComponent)source, property);
    }
    
    public Class<?> getAdapterClass(Class<?> type) {
        return JTextComponent.class.isAssignableFrom(type) ?
            JTextComponentAdapterProvider.Adapter.class :
            null;
    }
    
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久九九国产精品| 一区二区三区在线视频观看 | 日本一区二区免费在线| 久久66热re国产| 欧美电视剧免费全集观看 | 亚洲少妇最新在线视频| 成人免费精品视频| 亚洲国产精品精华液ab| 国产伦精品一区二区三区视频青涩| 日韩视频中午一区| 日韩成人一级大片| 欧美一区二区三区小说| 蜜臀精品一区二区三区在线观看 | 久久精品亚洲麻豆av一区二区| 久久精品国产亚洲一区二区三区| 日韩欧美一区二区在线视频| 男男视频亚洲欧美| 日韩亚洲欧美综合| 久久av中文字幕片| 久久综合九色综合97_久久久| 国产综合成人久久大片91| 精品捆绑美女sm三区| 国产精品自在欧美一区| 国产亚洲视频系列| 粉嫩av一区二区三区粉嫩| 国产精品毛片a∨一区二区三区| 国产91精品露脸国语对白| 国产精品三级电影| 色香蕉久久蜜桃| 亚洲综合小说图片| 欧美嫩在线观看| 美女国产一区二区| 久久精品日产第一区二区三区高清版| 成人午夜激情影院| 一区二区三区在线观看动漫| 欧美精品日韩综合在线| 久久99精品久久只有精品| 国产亚洲成aⅴ人片在线观看| 成人精品在线视频观看| 亚洲另类在线视频| 欧美一区二区三区精品| 国产**成人网毛片九色 | 麻豆精品在线播放| 国产亚洲女人久久久久毛片| 97se亚洲国产综合自在线不卡 | 亚洲图片激情小说| 国产高清不卡二三区| 亚洲视频1区2区| 欧美日本视频在线| 蜜桃视频第一区免费观看| 久久综合九色综合久久久精品综合| 国产一区二区免费视频| 国产精品全国免费观看高清| 99精品视频免费在线观看| 一区二区三区免费在线观看| 欧美日韩1234| 一区二区成人在线观看| 欧美视频在线观看一区| 蜜臀久久99精品久久久久宅男| 久久久久久久综合| 色婷婷香蕉在线一区二区| 丝袜美腿亚洲色图| 久久尤物电影视频在线观看| 成人a免费在线看| 亚洲1区2区3区4区| 久久日韩粉嫩一区二区三区| 波多野结衣的一区二区三区| 亚洲视频网在线直播| 91精品国产综合久久福利| 国产精品一级在线| 一区二区三区在线免费视频| 日韩欧美在线不卡| av激情综合网| 日本aⅴ亚洲精品中文乱码| 国产日韩欧美a| 欧美性视频一区二区三区| 麻豆91在线播放| 中文字幕在线不卡一区| 欧美日韩成人在线| 激情久久五月天| 亚洲欧美在线视频| 日韩午夜激情视频| 99免费精品视频| 日韩不卡一区二区三区| 亚洲国产精品ⅴa在线观看| 欧美日韩在线播| 国产成人一区在线| 午夜激情综合网| 日本一区二区视频在线| 欧美久久高跟鞋激| 99久久综合色| 久久99精品久久久久久 | 精品日韩成人av| 一本大道久久a久久综合婷婷| 另类专区欧美蜜桃臀第一页| 综合中文字幕亚洲| 欧美大片一区二区| 一本久久精品一区二区| 国产乱码精品一区二区三区五月婷 | 欧美色综合天天久久综合精品| 国产一区二区免费视频| 亚洲国产精品影院| 国产精品丝袜一区| 精品少妇一区二区三区日产乱码 | 国产精品资源在线| 五月天久久比比资源色| 国产精品美女久久久久久| 日韩视频一区二区三区在线播放| 92精品国产成人观看免费| 激情文学综合插| 亚洲777理论| 亚洲摸摸操操av| 久久蜜桃av一区精品变态类天堂 | 国产三级一区二区| 欧美一级午夜免费电影| 日本道精品一区二区三区| 国产sm精品调教视频网站| 美女网站视频久久| 亚洲午夜av在线| 亚洲一区二区三区国产| 国产精品初高中害羞小美女文| 26uuu国产一区二区三区 | 韩国女主播成人在线| 亚洲h动漫在线| 亚洲欧洲成人精品av97| 精品国产一区二区三区忘忧草| 欧美三级中文字幕在线观看| 91女厕偷拍女厕偷拍高清| 国产成人免费9x9x人网站视频| 麻豆专区一区二区三区四区五区| 亚洲成人高清在线| 亚洲制服丝袜一区| 亚洲欧美日本在线| 中文字幕一区二区三区在线播放| 国产农村妇女毛片精品久久麻豆| 26uuu色噜噜精品一区二区| 欧美一级久久久| 日韩一区二区在线免费观看| 欧美剧在线免费观看网站| 欧美视频在线观看一区| 欧美天堂一区二区三区| 色婷婷久久久综合中文字幕| 久久久蜜桃精品| 中文字幕久久午夜不卡| 欧美一区二区三区啪啪| 91美女视频网站| 91香蕉视频污在线| 99国产精品一区| 国产精品自拍一区| 久久免费的精品国产v∧| 99精品视频免费在线观看| 亚洲va欧美va人人爽午夜| 亚洲精品一区二区三区蜜桃下载| 丁香五精品蜜臀久久久久99网站| 亚洲手机成人高清视频| 欧美日韩国产首页| 激情六月婷婷久久| 亚洲三级久久久| 欧美一区二区日韩一区二区| 午夜精品一区二区三区三上悠亚| 精品久久久久香蕉网| 99久久婷婷国产精品综合| 天堂成人免费av电影一区| 久久精品男人的天堂| 在线观看视频欧美| 国内精品久久久久影院薰衣草| 亚洲视频小说图片| 日韩精品专区在线影院观看| 国产成人亚洲综合a∨婷婷图片| 亚洲男人电影天堂| 欧美大片免费久久精品三p| av爱爱亚洲一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品人人做人人爽人人添| 欧美精品久久久久久久多人混战| 成人免费看片app下载| 午夜天堂影视香蕉久久| 亚洲国产精品99久久久久久久久| 欧美挠脚心视频网站| 成人av影院在线| 国产在线精品免费| 亚洲123区在线观看| 国产精品理论片| 精品久久久久香蕉网| 欧美色综合天天久久综合精品| 国产精品1区2区3区| 日韩成人免费在线| 国产精品色哟哟网站| 久久日韩精品一区二区五区| 777a∨成人精品桃花网| 色999日韩国产欧美一区二区| 国产精品一区一区| 裸体在线国模精品偷拍| 亚洲一区欧美一区| 国产精品免费视频一区| 亚洲精品在线免费播放| 欧美一区二区福利视频| 欧美亚洲国产一卡| 91丨porny丨在线| 成人av网站在线|