createtool.java

来自「用java实现的画图程序」· Java 代码 · 共 70 行

JAVA
70
字号
package com.sunking.tp.tool;import java.awt.*;import java.awt.event.MouseEvent;import javax.swing.*;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 CreateTool extends AbstractTool {    int index = 3;    JTPComponent btt;    JTPComponent source;    Point lastPoint;    /**     *     * @param desk 所属绘图桌面     * @param c 被创建组件的原型     * @param icon 图标     */    public CreateTool(Desktop desk,JTPComponent c,Icon icon) {        super(desk);        setToolTip("Create");        setIcon(icon);        source = c;    }    /**     *启用工具     */    public void enabledTool() {        super.enabledTool();        desk.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));    }    public void mousePressed(MouseEvent e) {        lastPoint = e.getPoint();        btt = (JTPComponent)(source.clone());//复制一个做为新创建的组件        btt.setText("["+index+++"]"+source.getText());        ((Component)btt).setLocation(e.getPoint());        ((Container)desk).add(((Component)btt), null);    }    public void mouseReleased(MouseEvent e) {		/**		*长宽为0时表示未创建		*/        if(((Component)btt).getWidth() == 0 || ((Component)btt).getHeight() == 0){            ((Container)desk).remove(((Component)btt));        }        lastPoint = null;        btt = null;        desk.setTool(null);    }	/**	*拖动组件时改变大小	*/    public void mouseDragged(MouseEvent e){        if(btt!=null&&lastPoint != null){            int x=e.getX(),y=e.getY(),m=lastPoint.x,n=lastPoint.y;            int tmp=0;            if(x<m){tmp=x;x=m;m=tmp;}            if(y<n){tmp=y;y=n;n=tmp;}            ((Component)btt).setBounds(m,n,x-m,y-n);            ((Container)desk).repaint();        }    }}

⌨️ 快捷键说明

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