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

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

?? abstractcomponentadapter.java

?? SWING的界面UI包 SWING的界面UI包
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * AbstractComponentAdapter.java
 *
 * Created on 2007年5月2日, 下午11:40
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package dyno.swing.designer.beans.adapters.component;

import dyno.swing.designer.beans.GroupModel;
import dyno.swing.designer.beans.ComponentAdapter;
import dyno.swing.designer.beans.Constants;
import dyno.swing.designer.beans.DesignerEditor;
import dyno.swing.designer.beans.HoverPainter;
import dyno.swing.designer.beans.SwingDesigner;
import dyno.swing.designer.beans.Util;
import dyno.swing.designer.beans.actions.AbstractContextAction;
import dyno.swing.designer.beans.actions.ActionCategory;
import dyno.swing.designer.beans.actions.ChangeVarName;
import dyno.swing.designer.beans.actions.InvokeEditorAction;
import dyno.swing.designer.beans.actions.SetLnfAction;
import dyno.swing.designer.beans.editors.TextEditor;
import dyno.swing.designer.properties.EventGroupModel;
import dyno.swing.designer.properties.PropertyGroupModel;
import dyno.swing.designer.properties.ValidationException;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.beans.BeanInfo;
import java.beans.Beans;
import java.beans.EventSetDescriptor;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import javax.swing.Action;
import javax.swing.JComboBox;
import javax.swing.JDesktopPane;
import javax.swing.JEditorPane;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JSpinner;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextPane;
import javax.swing.JToolBar;


/**
 *
 * @author William Chen
 */
public abstract class AbstractComponentAdapter implements ComponentAdapter, Constants {

    static String[] skipped_property_list = {"name", "bounds", "model", "actionCommand", "actionMap"};
    static HashMap<String, String> skipped_properties = new HashMap<String, String>();
    static {
        for (String name : skipped_property_list) {
            skipped_properties.put(name, name);
        }
    }
    private static HashMap<Class<? extends Component>, Dimension> INITIAL_SIZE;
    static {
        INITIAL_SIZE = new HashMap<Class<? extends Component>, Dimension>();
        INITIAL_SIZE.put(JPanel.class, new Dimension(80, 80));
        INITIAL_SIZE.put(JTable.class, new Dimension(160, 160));
        INITIAL_SIZE.put(JTabbedPane.class, new Dimension(160, 160));
        INITIAL_SIZE.put(JScrollPane.class, new Dimension(160, 160));
        INITIAL_SIZE.put(JTextPane.class, new Dimension(80, 80));
        INITIAL_SIZE.put(JTextArea.class, new Dimension(80, 80));
        INITIAL_SIZE.put(JEditorPane.class, new Dimension(80, 80));
        INITIAL_SIZE.put(JSplitPane.class, new Dimension(160, 160));
        INITIAL_SIZE.put(JSeparator.class, new Dimension(80, 4));
        INITIAL_SIZE.put(JToolBar.class, new Dimension(120, 22));
        INITIAL_SIZE.put(JList.class, new Dimension(160, 160));
        INITIAL_SIZE.put(JComboBox.class, new Dimension(80, 22));
        INITIAL_SIZE.put(JSpinner.class, new Dimension(80, 22));
        INITIAL_SIZE.put(JDesktopPane.class, new Dimension(160, 160));
        INITIAL_SIZE.put(JLayeredPane.class, new Dimension(160, 160));
        INITIAL_SIZE.put(JInternalFrame.class, new Dimension(100, 100));
    }
    protected BeanInfo beanInfo;
    protected SwingDesigner designer;
    protected ArrayList<GroupModel> groupModels;
    protected DesignerEditor designerEditor;
    private PropertyDescriptor textProperty;
    protected Component component;

    /** Creates a new instance of AbstractComponentAdapter */
    public AbstractComponentAdapter(SwingDesigner designer, Component c) {
        this.designer = designer;
        this.component = c;
        try {
            beanInfo = Introspector.getBeanInfo(c.getClass());
        } catch (IntrospectionException e) {
            e.printStackTrace();
        }
    }

    public void initialize() {
        initText();
        Dimension initialSize = getInitialSize();
        component.setSize(initialSize);
        if (component instanceof Container) {
            Util.layoutContainer((Container) component);
        }
    }

    private void initContextMenu(Action[] actions, JPopupMenu popupMenu) {
        for (Action action : actions) {
            if (action instanceof ActionCategory) {
                popupMenu.addSeparator();
                Action[] subs = ((ActionCategory) action).getSubActions();
                initContextMenu(subs, popupMenu);
            } else {
                popupMenu.add(action);
            }
        }
    }

    private void initText() {
        String text = Util.getComponentName(component);
        PropertyDescriptor[] des = beanInfo.getPropertyDescriptors();
        for (PropertyDescriptor property : des) {
            if (property.getName().equals("text")) {
                try {
                    property.getWriteMethod().invoke(component, text);
                    break;
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        }
    }

    public BeanInfo getBeanInfo() {
        return beanInfo;
    }

    public Image getIcon(int iconKind) {
        Class clazz = beanInfo.getBeanDescriptor().getBeanClass();
        clazz = clazz.getSuperclass();
        BeanInfo binfo = beanInfo;
        try {
            while (clazz != null && binfo.getIcon(iconKind) == null) {
                binfo = Introspector.getBeanInfo(clazz);
                clazz = clazz.getSuperclass();
            }
            if (clazz == null) {
                return null;
            }
            return binfo.getIcon(iconKind);
        } catch (IntrospectionException ex) {
            ex.printStackTrace();
            return null;
        }
    }

    public Component clone() {
        try {
            Class<? extends Component> comp_class = (Class<? extends Component>) component.getClass();
            Component clone = comp_class.newInstance();

            clone.setBounds(component.getBounds());
            clone.setName(component.getName());
            cloneProperty(component, clone);

            return clone;
        } catch (Exception ex) {
            ex.printStackTrace();

            return null;
        }
    }

    private void cloneProperty(Component comp, Component clone) {
        try {
            Class clazz = comp.getClass();
            BeanInfo bInfo = Introspector.getBeanInfo(clazz);
            PropertyDescriptor[] properties = bInfo.getPropertyDescriptors();

            for (PropertyDescriptor property : properties) {
                if (skipped_properties.get(property.getName()) == null) {
                    Method read = property.getReadMethod();
                    Method write = property.getWriteMethod();

                    if ((read != null) && (write != null)) {
                        Object comp_value = read.invoke(comp);
                        Object clone_value = read.invoke(clone);

                        if (isChanged(clone_value, comp_value)) {
                            write.invoke(clone, comp_value);
                        }
                    }
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private static boolean isChanged(Object clone_value, Object comp_value) {
        boolean set = false;

        if (comp_value == null) {
            if (clone_value == null) {
                set = false;
            } else {
                set = true;
            }
        } else {
            if (clone_value == null) {
                set = true;
            } else {
                if (comp_value.equals(clone_value)) {
                    set = false;
                } else {
                    set = true;
                }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产·精品毛片| 亚洲国产精品99久久久久久久久| 国产精品丝袜一区| 国产99精品视频| 国产欧美日韩综合| 成人午夜免费电影| 亚洲欧美一区二区视频| 91热门视频在线观看| 一级日本不卡的影视| 精品无人码麻豆乱码1区2区| 精品一区二区三区香蕉蜜桃| 欧美成人vps| 成人av在线资源| 亚洲精品ww久久久久久p站| 欧美日本国产视频| 国产美女精品人人做人人爽| 国产免费观看久久| 成人毛片在线观看| 欧美影院精品一区| 麻豆91在线观看| 一区二区三区中文字幕电影| 欧美日韩一卡二卡三卡| 国产乱码精品一区二区三区五月婷 | 亚洲精品欧美综合四区| 欧美精品视频www在线观看| 精品午夜久久福利影院| 欧美国产一区二区| 欧美最猛性xxxxx直播| 日韩电影免费在线看| 伊人性伊人情综合网| 久久视频一区二区| 在线不卡一区二区| 色狠狠av一区二区三区| 国产suv精品一区二区三区| 美女视频免费一区| 亚洲国产中文字幕在线视频综合| 国产精品久久久久影院亚瑟 | 亚洲小说欧美激情另类| 国产精品久久久久四虎| 久久久久久电影| 国产校园另类小说区| 欧美一区二区黄| 9191精品国产综合久久久久久| 91在线观看美女| www.av精品| 成+人+亚洲+综合天堂| 一本久久精品一区二区| 91麻豆福利精品推荐| 69堂亚洲精品首页| 日韩一区二区在线观看| 欧美一区二区在线免费播放| 日韩一区二区免费在线观看| 欧美高清激情brazzers| 亚洲精品一线二线三线无人区| 欧美成人福利视频| 国产精品美女久久久久久久网站| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品午夜春色av| 亚洲资源中文字幕| 美日韩一级片在线观看| 国产成人av电影在线观看| 99久久精品情趣| 欧美精品一二三| 日韩一区二区三区视频在线| 久久久久久久性| 亚洲日本电影在线| 婷婷成人综合网| 日韩在线卡一卡二| 风流少妇一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 日本欧美肥老太交大片| 国产在线播放一区| 欧美在线一区二区三区| 精品久久久久av影院| 亚洲自拍另类综合| 国产mv日韩mv欧美| 欧美中文字幕久久 | 欧美日韩精品综合在线| 欧美大片顶级少妇| 中文一区二区完整视频在线观看| 亚洲在线观看免费视频| 国内成人精品2018免费看| 欧美在线观看一区| 国产欧美日韩卡一| 日韩高清在线观看| 91小视频在线免费看| 精品99久久久久久| 视频在线在亚洲| 欧美偷拍一区二区| 天天操天天色综合| 色一情一伦一子一伦一区| 中文一区二区在线观看| 成人午夜在线免费| 久久免费电影网| 国产成人在线视频网站| 国产亚洲欧美在线| 99久久99久久精品国产片果冻| 欧美一区二区播放| 久久精品久久综合| 日韩欧美一二三区| 精久久久久久久久久久| 欧美国产亚洲另类动漫| 国产成人免费视频| 国产精品理论在线观看| 国产成人日日夜夜| 日本一区二区三区四区在线视频| 久色婷婷小香蕉久久| 精品国产制服丝袜高跟| 成人三级伦理片| 一区二区三区四区在线播放| 欧美日本韩国一区| 国产福利一区在线| 亚洲成人午夜电影| 久久久久国产精品厨房| 日本精品一级二级| 美女视频网站久久| 一区二区三区欧美激情| 欧美电影免费观看高清完整版在线观看| 美女爽到高潮91| 一区二区欧美国产| 国产色综合久久| 在线不卡a资源高清| 成人午夜激情视频| 激情伊人五月天久久综合| 亚洲一区二区三区国产| 日韩欧美资源站| 在线精品视频免费播放| 国产精品一线二线三线精华| 亚洲国产精品一区二区久久恐怖片| 日韩视频一区二区在线观看| 波多野结衣亚洲一区| 麻豆91免费看| 麻豆国产精品视频| 捆绑调教美女网站视频一区| 欧美激情一区二区三区四区| 日韩一区二区电影| 精品视频在线免费看| 色猫猫国产区一区二在线视频| 国产在线看一区| 国产一区激情在线| 精品亚洲成a人| 精品一区二区三区欧美| 久久99精品国产麻豆婷婷洗澡| 日本欧美在线观看| 麻豆国产欧美日韩综合精品二区| 日韩成人午夜电影| 五月天视频一区| 麻豆成人91精品二区三区| 蜜桃视频一区二区| 久久精品国产亚洲5555| 日本三级韩国三级欧美三级| 亚洲图片欧美一区| 青青国产91久久久久久| 日本亚洲三级在线| 国产乱淫av一区二区三区| 不卡的av在线播放| 欧美日韩国产另类不卡| 久久影音资源网| 亚洲精品乱码久久久久久久久 | 国产精品色眯眯| 婷婷开心久久网| 国产精品一区在线观看你懂的| 国产成人综合自拍| 在线观看日产精品| 337p日本欧洲亚洲大胆精品 | 亚洲色图一区二区| 九色|91porny| 91国模大尺度私拍在线视频| 亚洲美女偷拍久久| 天天操天天干天天综合网| 久久av资源网| 91亚洲精品久久久蜜桃网站| 日韩精品专区在线影院观看| 亚洲精品一卡二卡| 激情综合一区二区三区| 欧美夫妻性生活| 久久精品一区二区三区不卡| 亚洲一区二区三区三| 国产在线看一区| 在线视频观看一区| 一区二区三区四区国产精品| 韩国在线一区二区| 欧美性色黄大片手机版| 国产日韩精品一区二区三区 | 国产精品天天摸av网| 91精品国产综合久久久久久久 | 国产精品羞羞答答xxdd| 一区二区在线观看免费视频播放| 在线观看免费视频综合| 亚洲一区二区欧美| 在线看日本不卡| 亚洲自拍欧美精品| 日韩一区二区高清| 韩国精品在线观看| 中文字幕在线一区免费| 91丨九色丨尤物| 日韩精品一级中文字幕精品视频免费观看 | 久久一留热品黄| jlzzjlzz国产精品久久| 亚洲第一狼人社区|