⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zshape.java

📁 用Java写的报表.功能如下: 0.内建网络打印,网络预览功能! 1.文件操作。包括url 指定的文件。 2.全功能打印支持。包括打印预览。 3.Undo 和 redo。 4.合并单元格。 5.Cel
💻 JAVA
字号:
/*
 * Copyright 2002 EZCell , Inc. All rights reserved.
 * Version  1.0.
 * Author   W.John
 */
package ezcell;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Shape;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;


public interface ZShape extends Cloneable {
    static final int VERTICAL = 1;
    static final int HORIZONTAL = 2;

    /**
     * DOCUMENT ME!
     *
     * @param left
     * @param top
     * @param right
     * @param bottom
     */
    public void setBound(int left, int top, int right, int bottom);

    /**
     * DOCUMENT ME!
     *
     * @return
     */
    public ZRect getBound();

    /**
     * DOCUMENT ME!
     *
     * @param modal
     */
    public void setModal(ZSheetState modal);

    /**
     * DOCUMENT ME!
     *
     * @return
     */
    boolean isAnimating();

    /**
     * DOCUMENT ME!
     *
     * @return
     */
    int getID();

    /**
     * DOCUMENT ME!
     *
     * @return
     */
    ZSheetState getModal();

    /**
     * DOCUMENT ME!
     *
     * @param g2
     */
    void erase(Graphics2D g2);

    /**
     * DOCUMENT ME!
     *
     * @param p
     *
     * @return
     */
    ZShape hit(Point p);

    /**
     * DOCUMENT ME!
     *
     * @param x
     * @param y
     */
    void moveTo(int x, int y);

    /**
     * DOCUMENT ME!
     *
     * @param g2
     */
    void paint(Graphics2D g2);

    /**
     * DOCUMENT ME!
     */
    void startAnimation();

    /**
     * DOCUMENT ME!
     */
    void stopAnimation();

    abstract class AbstractShape implements ZShape {
        ZSheetState modal;
        int id;

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        public boolean isAnimating() {
            return false;
        }

        /**
         * DOCUMENT ME!
         *
         * @param left
         * @param top
         * @param right
         * @param bottom
         */
        public void setBound(int left, int top, int right, int bottom) {
        }

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        public ZRect getBound() {
            return null;
        }

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        public int getID() {
            return id;
        }

        /**
         * DOCUMENT ME!
         *
         * @param modal
         */
        public void setModal(ZSheetState modal) {
            this.modal = modal;
        }

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        public ZSheetState getModal() {
            return modal;
        }

        /**
         * DOCUMENT ME!
         *
         * @param g2
         */
        public void erase(Graphics2D g2) {
            paint(g2);
        }

        /**
         * DOCUMENT ME!
         *
         * @param p
         *
         * @return
         */
        public ZShape hit(Point p) {
            return null;
        }

        /**
         * DOCUMENT ME!
         *
         * @param x
         * @param y
         */
        public void moveTo(int x, int y) {
        }

        /**
         * DOCUMENT ME!
         *
         * @param g2
         */
        public void paint(Graphics2D g2) {
        }

        /**
         * DOCUMENT ME!
         */
        public void startAnimation() {
        }

        /**
         * DOCUMENT ME!
         */
        public void stopAnimation() {
        }
    }

    public class Row extends AbstractShape {
        int top;
        int bottom;

        Row(int top, int bottom, int id) {
            this.top = top;
            this.bottom = bottom;
            this.id = id;
        }

        /**
         * DOCUMENT ME!
         *
         * @param p
         *
         * @return
         */
        public ZShape hit(Point p) {
            if ((p.y >= top) && (p.y <= bottom)) {
                return this;
            } else {
                return null;
            }
        }
    }

    public class Cell extends AbstractShape {
        ZRect rect;
        int row;
        int col;

        Cell(ZRect rect, int row, int col) {
            this.rect = rect;
            this.row = row;
            this.col = col;
            this.id = ZSheetState.HIT_CELL;
        }

        /**
         * DOCUMENT ME!
         *
         * @param p
         *
         * @return
         */
        public ZShape hit(Point p) {
            return this;
        }
    }

    public class Col extends AbstractShape {
        int left;
        int right;

        Col(int left, int right, int id) {
            this.left = left;
            this.right = right;
            this.id = id;
        }

        /**
         * DOCUMENT ME!
         *
         * @param p
         *
         * @return
         */
        public ZShape hit(Point p) {
            if ((p.x >= left) && (p.x <= right)) {
                return this;
            } else {
                return null;
            }
        }
    }

    class Rectangle extends AbstractShape {
        int left;
        int top;
        int right;
        int bottom;
        boolean animation;
        ZPen pen;
        Object object;

        Rectangle(int left, int top, int right, int bottom, int id) {
            this.left = left;
            this.top = top;
            this.right = right;
            this.bottom = bottom;
            this.id = id;
        }

        Rectangle(int id) {
            this.id = id;
        }

        /**
         * DOCUMENT ME!
         *
         * @param left
         * @param top
         * @param right
         * @param bottom
         */
        public void setBound(int left, int top, int right, int bottom) {
            this.left = left;
            this.top = top;
            this.right = right;
            this.bottom = bottom;
        }

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        public ZRect getBound() {
            return new ZRect(left, top, right, bottom);
        }

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        public Object clone() {
            try {
                return super.clone();
            } catch (CloneNotSupportedException ex) {
                return null;
            }
        }

        /**
         * DOCUMENT ME!
         *
         * @param p
         *
         * @return
         */
        public ZShape hit(Point p) {
            if (getBound().contain(p.x, p.y)) {
                return this;
            }

            return null;
        }

        /**
         * DOCUMENT ME!
         *
         * @param p
         *
         * @return
         */
        public ZShape hitBorder(Point p) {
            ZRect rc = getBound();

            if (rc.inflate(-2, -2).contain(p.x, p.y)) {
                return null;
            }

            if (rc.inflate(4, 4).contain(p.x, p.y)) {
                return this;
            } else {
                return null;
            }
        }

        /**
         * DOCUMENT ME!
         *
         * @param g2
         */
        public void paint(Graphics2D g2) {
            g2.transform(modal.getTransform());

            Shape gc = g2.getClip();

            try {
                modal.clipClient(g2);
            } catch (Exception ex) {
            }

            g2.setXORMode(Color.white);
            pen.paint(g2);

            Rectangle2D r = new Rectangle2D.Float(left, top, right - left, bottom - top);
            g2.draw(r);
            g2.setPaintMode();
            g2.setClip(gc);
        }
    }

    class HLine extends AbstractShape {
        int orientation;
        Point pos = new Point(-1, -1);
        boolean animation;
        ZPen pen;

        HLine(int orientation, int pos, ZPen pen) {
            this.modal = modal;

            if (orientation == ZShape.VERTICAL) {
                this.pos.x = pos;
            } else {
                this.pos.y = pos;
            }

            this.pen = pen;
        }

        /**
         * DOCUMENT ME!
         *
         * @param x
         * @param y
         */
        public void moveTo(int x, int y) {
            if (pos.y == -1) {
                pos.x = x;
            } else {
                pos.y = y;
            }
        }

        /**
         * DOCUMENT ME!
         *
         * @param g2
         */
        public void paint(Graphics2D g2) {
            ZRect clip = modal.getClip();
            Point tl = modal.dp2lp(clip.getTopLeft());
            Point br = modal.dp2lp(clip.getBottomRight());

            // erase old
            Point p0;

            // erase old
            Point p1;

            if (pos.y == -1) {
                tl.x = pos.x;
                br.x = pos.x;
            } else {
                tl.y = pos.y;
                br.y = pos.y;
            }

            g2.transform(modal.getTransform());
            g2.setXORMode(Color.white);
            pen.paint(g2);

            Line2D line = new Line2D.Float(tl.x, tl.y, br.x, br.y);
            g2.draw(line);
            g2.setPaintMode();
        }
    }

    class SimpleHLine extends AbstractShape {
        Point tl;
        Point br;
        ZPen pen;

        SimpleHLine(int l, int t, int r, int b, ZPen pen) {
            tl = new Point(l, t);
            br = new Point(r, b);
            this.pen = pen;
        }

        SimpleHLine(int l, int t, int r, int b, ZPen pen, int id) {
            this(l, t, r, b, pen);
            this.id = id;
        }

        /**
         * DOCUMENT ME!
         *
         * @param p
         *
         * @return
         */
        public ZShape hit(Point p) {
            ZRect rect = new ZRect(tl.x, tl.y, br.x, br.y);
            rect.grow(2, 2);

            if (rect.contain(p.x, p.y)) {
                return this;
            } else {
                return null;
            }
        }

        /**
         * DOCUMENT ME!
         *
         * @param x
         * @param y
         */
        public void moveTo(int x, int y) {
            br.x += (x - tl.x);
            br.y += (y - tl.y);
            tl.x = x;
            tl.y = y;
        }

        /**
         * DOCUMENT ME!
         *
         * @param g2
         */
        public void paint(Graphics2D g2) {
            g2.setXORMode(Color.white);
            pen.paint(g2);

            Line2D line = new Line2D.Float(tl.x, tl.y, br.x, br.y);
            g2.draw(line);
            g2.setPaintMode();
        }

        /**
         * DOCUMENT ME!
         *
         * @param g2
         */
        public void paint2(Graphics2D g2) {
            pen.paint(g2);

            Line2D line = new Line2D.Float(tl.x, tl.y, br.x, br.y);
            g2.draw(line);
        }

        /**
         * DOCUMENT ME!
         *
         * @param pen
         */
        void setPen(ZPen pen) {
            this.pen = pen;
        }

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        ZPen getPen() {
            return pen;
        }
    }
}

⌨️ 快捷键说明

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