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

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

?? jtpdesktoppane.java

?? java繪圖方面的源碼 。。 。。
?? JAVA
字號:
package com.sunking.tp.swing;

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.geom.*;
import java.util.*;
import com.sunking.tp.tool.*;
import com.sunking.tp.framework.*;

/**
 *
 * <p>Title: </p>
 * <p>Description: 畫圖桌面</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
 * @version 1.0
 */

public class JTPDesktopPane extends JPanel implements Desktop, java.io.Serializable {
    private static final long serialVersionUID = -3000000000000000009L;
    /**
     *
     */
//    BasicStroke stroke=new BasicStroke(1.0f,BasicStroke.CAP_BUTT,
//                                       BasicStroke.JOIN_ROUND,140.0f,new float[]{1.0f},150.0f);
    /**
     *拖動框
     */
    Rectangle dragRec = null;
    /**
     *當前選取的連線
     */
    AssoicatorLine selectedLine = null;
    /**
     *所有連線
     */
    AssoicatorLine assoicatorLines[] = null;
    /**
     *最大尺寸
     */
    Dimension maxSize = new Dimension(0, 0);
    /**
     *當前工具
     */
    Tool tool;
    /**
     *默認工具
     */
    transient Tool defaultTool;
    /**
     *右鍵彈出菜單生成器
     */
    transient JTPMenuFactory jtpMenuFactory;
    public JTPDesktopPane() {
        this.setLayout(null);
        setTool(getDefaultTool());
        setBackground(UIManager.getColor("Desktop.background"));
    }

    /**
     *添加鼠標監聽器
     * @param l
     */
    public void addMouseInputListener(MouseInputListener l) {
        this.addMouseListener(l);
        this.addMouseMotionListener(l);
    }

    /**
     *移除鼠標監聽器
     * @param l
     */
    public void removeMouseInputListener(MouseInputListener l) {
        this.removeMouseListener(l);
        this.removeMouseMotionListener(l);
    }

    /**
     *取得某點上的組件
     * @param p
     * @return
     */
    public JTPComponent getJTPComponent(Point p) {
        for (int i = 0; i < getComponentCount(); i++) {
            Component c = getComponent(i);
            Point p1 = SwingUtilities.convertPoint(this, p, c);
            if ( (c instanceof JTPComponent) && c.contains(p1)) {
                return (JTPComponent) c;
            }
        }
        return null;
    }

    /**
     *取得當前選取的組件
     * @return
     */
    public JTPComponent[] getSelectionJTPComponent() {
        Vector vSelection = new Vector();
        for (int i = 0; i < getComponentCount(); i++) {
            Component c = getComponent(i);
            if (c instanceof JTPComponent) {
                JTPComponent tc = (JTPComponent) c;
                if (tc.isSelected()) {
                    vSelection.add(tc);
                }
            }
        }
        JTPComponent tpc[] = new JTPComponent[vSelection.size()];
        vSelection.copyInto(tpc);
        return tpc;
    }

    /**
     *添加選取的組件
     * @param c
     */
    public void addSelection(JTPComponent c) {
        c.setSelect(true);
    }

    /**
     *移除選取的組件
     * @param c
     */
    public void removeSelection(JTPComponent c) {
        c.setSelect(false);
    }

    /**
     *設置工具
     * @param t
     */
    public void setTool(Tool t) {
        getDefaultTool().disabledTool();
        if (tool != null) {
            tool.disabledTool();
        }
        this.tool = t;
        if (t != null) {
            t.enabledTool();
        } else {
            getDefaultTool().enabledTool();
        }
        repaint();
    }

    /**
     *取得當前工具
     * @return
     */
    public Tool getTool() {
        if (tool != null) {
            return tool;
        }
        return getDefaultTool();
    }

    /**
     *取得默認工具
     * @return
     */
    public Tool getDefaultTool() {
        if (defaultTool == null) {
            defaultTool = new SelectionTool(this);
        }
        return defaultTool;
    }

    /**
     *激發連接器更新
     */
    public void fireAssoicatorChanged() {
        assoicatorLines = getAssoicatorLines();
        this.setPreferredSize(maxSize);
        repaint();
        if (getParent() != null) {
            getParent().doLayout();
        }
    }

    /**
     *鼠標點擊選取
     * @param p
     */
    public void mouseSelect(Point p) {
        selectedLine = null;
        JTPComponent tp = getJTPComponent(p);
        if (tp != null) {
            tp.setSelect(true);
        } else {
            if (assoicatorLines != null && p != null) {
                for (int i = 0; i < assoicatorLines.length; i++) {
                    if (assoicatorLines[i].contains(p)) {
                        selectedLine = assoicatorLines[i];
                    }
                }
            }
        }
        repaint();
    }

    /**
     *鼠標拉框選取
     * @param rec
     */

    public void mouseSelect(Rectangle rec) {
        dragRec = rec;
        if (dragRec == null) {
            repaint();
            return;
        }
        for (int i = 0; i < getComponentCount(); i++) {
            Component c = getComponent(i);
            if (c instanceof JTPComponent) {
                if (c.getBounds().intersects(rec)) {
                    ( (JTPComponent) c).setSelect(true);
                    selectedLine = null;
                } else {
                    ( (JTPComponent) c).setSelect(false);
                }
            }
        }
        repaint();
    }

    /**
     *清除全部選取
     */
    public void clearSelection() {
        for (int i = 0; i < getComponentCount(); i++) {
            if (getComponent(i)instanceof JTPComponent) {
                JTPComponent c = (JTPComponent) getComponent(i);
                c.setSelect(false);
            }
        }
        selectedLine = null;
        repaint();
    }

    /**
     *刪除當前選取
     */
    public void deleteSelection() {
        if (selectedLine != null) {
            selectedLine.source.removeAssociator(selectedLine.dest);
            selectedLine.dest.removeAssociator(selectedLine.source);
            selectedLine = null;
        } else {
            for (int i = getComponentCount() - 1; i >= 0; i--) {
                if (getComponent(i)instanceof JTPComponent) {
                    JTPComponent c = (JTPComponent) getComponent(i);
                    if (c.isSelected()) {
                        remove(c);
                        remove(i);
                        //break;
                    }
                }
            }
        }
        fireAssoicatorChanged();
    }
    /**
     * 取得當前選取的連線
     * @return
     */
    public AssoicatorLine getSelectionLine(){
        return selectedLine;
    }

    /**
     *移除組件
     * @param c
     */
    public void remove(JTPComponent c) {
        if (assoicatorLines != null) {
            for (int i = 0; i < assoicatorLines.length; i++) {
                AssoicatorLine line = assoicatorLines[i];
                if (line.source == c || line.dest == c) {
                    line.source.removeAssociator(line.dest);
                    line.dest.removeAssociator(line.source);
                }
            }
        }
    }

    /**
     *繪制組件及其選取狀態\拉框選取時的框線
     * @param g
     */
    public void paintChildren(Graphics g) {
        if (assoicatorLines != null) {
            for (int i = 0; i < assoicatorLines.length; i++) {
                assoicatorLines[i].drawLine(g);
            }
        }
        if (selectedLine != null) {
            selectedLine.drawHandle(g);
        }
        super.paintChildren(g);
//        Graphics2D g2=(Graphics2D)g;
//        g2.setStroke(stroke);
//        g2.setXORMode(getParent().getBackground());
        if (dragRec != null) {
            Color c = getBackground();
            g.setColor(new Color(255 - c.getRed(), 255 - c.getGreen(), 255 - c.getBlue()));
            g.drawRect(dragRec.x, dragRec.y, dragRec.width, dragRec.height);
        }

    }

    /**
     *取得當前所有的連線
     * @return
     */
    public AssoicatorLine[] getAssoicatorLines() {
        maxSize = new Dimension(0, 0);
        Vector vec = new Vector();
        for (int i = 0; i < getComponentCount(); i++) {
            Component com = getComponent(i);
            if (com instanceof JTPComponent) {
                JTPComponent c = (JTPComponent) getComponent(i);
                Assoicator ass[] = c.getAssociator();
                if (ass != null) {
                    for (int j = 0; j < ass.length; j++) {
                        vec.add(new AssoicatorLine(c, ass[j]));
                    }
                }
            }
            maxSize.setSize(Math.max(maxSize.getWidth(), com.getX() + com.getWidth() + 10),
                Math.max(maxSize.getHeight(), com.getY() + com.getHeight() + 10));
        }
        if (vec.size() == 0)
            return null;
        AssoicatorLine lines[] = new AssoicatorLine[vec.size()];
        vec.copyInto(lines);
        return lines;
    }

    /**
     *設置右鍵菜單生成器
     * @param f
     */
    public void setJTPMenuFactory(JTPMenuFactory f) {
        jtpMenuFactory = f;
    }

    /**
     *取得右鍵菜單生成器
     * @return
     */
    public JTPMenuFactory getJTPMenuFactory() {
        if (jtpMenuFactory == null) {
            jtpMenuFactory = JTPDefaultMenuFactory.getDefault();
        }
        return jtpMenuFactory;
    }
    /**
     * 調入畫圖桌面
     * @param desk
     */
    public void loadDesktop(Object d) throws Exception{
        this.removeAll();
        JTPDesktopPane desk = (JTPDesktopPane)d;
        Vector v = new Vector();
        for (int i = 0; i < desk.getComponentCount(); i++) {
            Component c = desk.getComponent(i);
//            add(c);
//這里有一個BUG,當不用Vector先存儲時,直接進行add(c),會出現丟失組件的錯誤
//不知道是什么原因.它也不會報錯.
            v.add(c);
        }
        for (int i = 0; i < v.size(); i++) {
            add((Component)v.get(i));
        }
        this.dragRec = desk.dragRec;
        this.selectedLine = desk.selectedLine;
        this.assoicatorLines = desk.assoicatorLines;
        this.maxSize = desk.maxSize;
        fireAssoicatorChanged();
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩三区| 九色|91porny| 亚洲精品乱码久久久久久久久| 久久女同精品一区二区| 精品国产伦一区二区三区观看体验| 在线观看91av| 日韩精品一区二区三区中文不卡| 欧美成人乱码一区二区三区| 欧美xfplay| 久久女同性恋中文字幕| 久久午夜国产精品| 国产女人aaa级久久久级| 欧美激情一区二区三区四区| 中文字幕中文字幕一区| 亚洲乱码中文字幕综合| 一区二区三区高清不卡| 亚洲高清免费视频| 麻豆精品视频在线观看视频| 国产一区亚洲一区| 成人激情免费视频| 99久久精品国产导航| 欧美丝袜第三区| 日韩一区二区三区免费观看| 26uuu久久综合| 中文字幕日韩av资源站| 亚洲美女屁股眼交| 午夜国产不卡在线观看视频| 日本aⅴ亚洲精品中文乱码| 国内精品视频666| 成人动漫av在线| 欧美在线视频日韩| 欧美一级xxx| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩理论在线观看| 天堂av在线一区| 国产精品自拍av| 欧美最新大片在线看| 欧美一级在线观看| 国产精品乱子久久久久| 亚洲.国产.中文慕字在线| 老司机精品视频一区二区三区| 国产成人免费视频网站高清观看视频 | 色婷婷av一区二区三区软件| 欧美主播一区二区三区| 欧美精品一区二| 亚洲精品国产第一综合99久久| 麻豆成人免费电影| 99热在这里有精品免费| 91精品国产日韩91久久久久久| 中日韩av电影| 日韩成人伦理电影在线观看| 成人免费视频免费观看| 欧美丰满少妇xxxxx高潮对白| 国产日韩欧美高清在线| 天使萌一区二区三区免费观看| 国产传媒欧美日韩成人| 欧美区一区二区三区| 国产精品色婷婷| 免费一级欧美片在线观看| 99久久99久久久精品齐齐| 精品免费国产二区三区| 一二三区精品视频| 处破女av一区二区| 日韩欧美一区电影| 亚洲猫色日本管| 国产一区不卡在线| 欧美久久高跟鞋激| 亚洲欧美成人一区二区三区| 国产美女精品人人做人人爽| 9191成人精品久久| 亚洲欧美日韩小说| 国产91色综合久久免费分享| 日韩女优av电影在线观看| 一区二区免费看| 91原创在线视频| 国产欧美一区二区精品秋霞影院| 日本不卡一区二区| 欧美亚洲一区二区三区四区| 日本一区二区三区高清不卡| 久久电影国产免费久久电影| 欧美色倩网站大全免费| 亚洲精品菠萝久久久久久久| 成人国产精品免费观看视频| 久久色.com| 精品一区二区三区的国产在线播放| 欧美日韩久久一区二区| 一区二区三区中文字幕精品精品| 成人黄色在线网站| 国产亚洲一区字幕| 精品在线视频一区| 欧美高清www午色夜在线视频| 欧洲视频一区二区| 成人欧美一区二区三区小说| 国产不卡免费视频| 欧美精品一区二区在线观看| 久久狠狠亚洲综合| 在线播放亚洲一区| 午夜精品国产更新| 欧美日韩免费在线视频| 亚洲一区二区成人在线观看| 欧美在线看片a免费观看| 亚洲特级片在线| 91麻豆123| 一区二区在线观看不卡| 欧美午夜不卡视频| 一区二区欧美精品| 欧美日韩国产大片| 三级久久三级久久| 日韩免费一区二区三区在线播放| 免费观看日韩av| 精品伦理精品一区| 高清不卡一区二区| 国产精品久久久久久久蜜臀| 91亚洲国产成人精品一区二区三| 亚洲欧洲成人精品av97| 一本色道久久加勒比精品| 亚洲人午夜精品天堂一二香蕉| 日本久久电影网| 香蕉久久一区二区不卡无毒影院| 91麻豆精品国产91久久久久久久久 | 麻豆国产欧美一区二区三区| 精品美女被调教视频大全网站| 国产成人在线影院| 国产精品第五页| 欧美自拍偷拍一区| 日韩成人dvd| 久久精品一区二区| 91社区在线播放| 亚洲电影一级片| 日韩欧美国产系列| 波多野结衣亚洲一区| 夜夜嗨av一区二区三区四季av| 欧美精品黑人性xxxx| 狠狠v欧美v日韩v亚洲ⅴ| 中文字幕精品—区二区四季| 色综合天天综合网天天看片| 午夜视频在线观看一区二区三区 | 午夜精品视频在线观看| 日韩精品中文字幕一区| 成人av在线影院| 天天色综合成人网| 久久一区二区视频| 色先锋久久av资源部| 人人爽香蕉精品| 国产精品久久久久婷婷二区次| 欧美久久久久久久久| 国产精品一区二区91| 一区二区三区资源| 精品粉嫩aⅴ一区二区三区四区| 成人av动漫网站| 日韩精品午夜视频| 中文字幕亚洲欧美在线不卡| 精品国产一二三| 色综合色狠狠综合色| 毛片av中文字幕一区二区| 国产精品亲子乱子伦xxxx裸| 欧美精品一二三区| 国产馆精品极品| 亚洲成人免费观看| 中文在线资源观看网站视频免费不卡| 欧美挠脚心视频网站| 成人国产精品免费观看| 老司机精品视频线观看86| 亚洲激情五月婷婷| 日本一区二区在线不卡| 欧美一区二区三区日韩视频| gogo大胆日本视频一区| 精品综合免费视频观看| 亚洲一区中文日韩| 国产精品午夜免费| 日韩欧美一区二区三区在线| 欧亚洲嫩模精品一区三区| 成人午夜伦理影院| 精品一区二区三区免费视频| 亚洲综合清纯丝袜自拍| 中文字幕av免费专区久久| 欧美电影免费观看高清完整版在线| 在线观看欧美精品| 不卡一区中文字幕| 国产伦精品一区二区三区视频青涩 | 国产精品久久精品日日| 日韩一卡二卡三卡国产欧美| 在线观看日韩电影| 91污在线观看| 高清不卡在线观看av| 国精产品一区一区三区mba桃花| 午夜国产不卡在线观看视频| 亚洲精品成人a在线观看| 综合自拍亚洲综合图不卡区| 国产欧美精品日韩区二区麻豆天美| 日韩欧美久久久| 91麻豆精品91久久久久久清纯| 欧美吞精做爰啪啪高潮| 97久久精品人人做人人爽50路| 国产宾馆实践打屁股91| 高清国产一区二区| 粉嫩一区二区三区性色av| 国产一区二区在线免费观看| 久久精品av麻豆的观看方式| 日韩综合小视频|