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

📄 zprintpreview.java

📁 用Java写的报表.功能如下: 0.内建网络打印,网络预览功能! 1.文件操作。包括url 指定的文件。 2.全功能打印支持。包括打印预览。 3.Undo 和 redo。 4.合并单元格。 5.Cel
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
         */
        ZPen getPen() {
            return hiLinePen;
        }

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        int getState() {
            return info.mainState;
        }

        /**
         */
        boolean fireBodyClicked() {
            return false;
        }

        /**
         */
        boolean fireFooterClicked() {
            if (getModal() == doc.getFooterModal()) {
                return false;
            }

            editFooter();

            return true;
        }

        /**
         */
        boolean fireHeaderClicked() {
            if (getModal() == doc.getHeaderModal()) {
                return false;
            }

            editHeader();

            return true;
        }

        /** Used to ajust imageable area's margin
         */
        class _MarginHandler extends MouseAdapter implements MouseMotionListener {
            /**
             * DOCUMENT ME!
             *
             * @param e
             */
            public void mouseDragged(MouseEvent e) {
                if (getState() != STATE_IDLE) {
                    return;
                }

                if (state == STS_Margin_Ready) {
                    switch (selectedMarginer.getID()) {
                    case 0:
                    case 6:
                    case 1:
                    case 7:
                        bar = new ZShape.SimpleHLine(selectedMarginer.left + 2, 0, selectedMarginer.left + 2,
                                                     (int) (pagePane.getSize().getHeight()), getPen());

                        break;

                    default:
                        bar = new ZShape.SimpleHLine(0, selectedMarginer.top + 2, (int) (pagePane.getSize().getWidth()),
                                                     selectedMarginer.top + 2, getPen());

                        break;
                    }

                    add(bar);
                    state = STS_Marginning;
                } else if (state == STS_Marginning) {
                    Point to = (Point) e.getPoint().clone();
                    float scale = doc.getScale();
                    ZRect image = doc.getImageArea();

                    switch (selectedMarginer.getID()) {
                    case 0:
                    case 6:

                        if (((to.x / scale) + MINIUM_SPACE) > image.right) {
                            return;
                        } else {
                            to.y = 0;
                        }

                        break;

                    case 1:
                    case 7:

                        if (((to.x / scale) - MINIUM_SPACE) < image.left) {
                            return;
                        } else {
                            to.y = 0;
                        }

                        break;

                    case 2:
                    case 3:

                        if (((to.y / scale) + MINIUM_SPACE) > image.bottom) {
                            return;
                        } else {
                            to.x = 0;
                        }

                        break;

                    case 4:
                    case 5:

                        if (((to.y / scale) - MINIUM_SPACE) < image.top) {
                            return;
                        } else {
                            to.x = 0;
                        }

                        break;

                    case 8:
                    case 9:

                        if (((to.y / scale) < image.top) ||
                                (((to.y / scale) + MINIUM_SPACE) > (image.bottom - doc.getFooterHeight()))) {
                            return;
                        } else {
                            to.x = 0;
                        }

                        break;

                    case 10:
                    case 11:

                        if ((((to.y / scale) - MINIUM_SPACE) < (image.top + doc.getHeaderHeight())) ||
                                ((to.y / scale) > image.bottom)) {
                            return;
                        } else {
                            to.x = 0;
                        }

                        break;
                    }

                    move(bar, to);
                }
            }

            /**
             * DOCUMENT ME!
             *
             * @param e
             */
            public void mouseMoved(MouseEvent e) {
                if (getState() != STATE_IDLE) //正在调整边距,不要添乱
                {
                    return;
                }

                ZShape sp = null;

                try {
                    sp = hit(e.getPoint());
                } catch (Exception ex) {
                }

                if (sp != null) {
                    switch (sp.getID()) {
                    case 0:
                    case 1:
                    case 6:
                    case 7:
                        pagePane.setCursor(cursors[ZSheetState.RESIZE_COL_CURSOR]);

                        break;

                    default:
                        pagePane.setCursor(cursors[ZSheetState.RESIZE_ROW_CURSOR]);

                        break;
                    }

                    selectedMarginer = (ZShape.Rectangle) sp;
                    state = STS_Margin_Ready;
                    pagePane.setToolTipText("Margin");
                } else if (state == STS_Margin_Ready) {
                    pagePane.setToolTipText(null);
                    setIdle();
                }
            }

            /**
             *
             * @param e
             */
            public void mousePressed(MouseEvent e) {
                if ((getState() != STATE_IDLE) || (e.getClickCount() == 1)) //正在调整边距,不要添乱
                {
                    return;
                }

                Point p = e.getPoint();
                boolean redispatch = false;

                if (header.contain(p.x, p.y)) {
                    redispatch = fireHeaderClicked();
                } else if (footer.contain(p.x, p.y)) {
                    redispatch = fireFooterClicked();
                } else if (body.contain(p.x, p.y)) {
                    redispatch = fireBodyClicked();
                }

                if (redispatch) {
                    MouseEvent me = new MouseEvent(pagePane, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, p.x, p.y, 1,
                                                   false);
                    pagePane.dispatchEvent(me);
                }
            }

            /**
             * DOCUMENT ME!
             *
             * @param e
             */
            public void mouseReleased(MouseEvent e) {
                if (getState() != STATE_IDLE) //正在调整边距,不要添乱
                {
                    return;
                }

                if (state == STS_Marginning) {
                    marginersDirty = true;
                    kill(bar);

                    ZRect margin = (ZRect) doc.getImageArea().clone();
                    float scale = doc.getScale();
                    int id = selectedMarginer.getID();

                    if (id < 8) {
                        switch (selectedMarginer.getID()) {
                        case 0:
                        case 6:
                            margin.left = (int) (bar.tl.x / scale);

                            break;

                        case 1:
                        case 7:
                            margin.right = (int) (bar.tl.x / scale);

                            break;

                        case 2:
                        case 3:
                            margin.top = (int) (bar.tl.y / scale);

                            break;

                        case 4:
                        case 5:
                            margin.bottom = (int) (bar.tl.y / scale);

                            break;
                        }

                        PageFormat pf = (PageFormat) doc.getPageFormat().clone();
                        Paper pp = (Paper) pf.getPaper().clone();

                        if (pf.getOrientation() == PageFormat.PORTRAIT) {
                            pp.setImageableArea(margin.left, margin.top, margin.getWidth(), margin.getHeight());
                        } else {
                            pp.setImageableArea(margin.top, pp.getHeight() - (margin.left + margin.getWidth()),
                                                margin.getHeight(), margin.getWidth());
                        }

                        pf.setPaper(pp);

                        doc.setPageFormat(pf);
                    } else {
                        switch (id) {
                        case 8:
                        case 9:

                            ZRect area = doc.getHeaderArea();
                            doc.setHeaderHeight((int) (bar.tl.y / scale) - area.top);

                            break;

                        case 10:
                        case 11:
                            area = doc.getFooterArea();
                            doc.setFooterHeight((int) (area.bottom - bar.tl.y / scale));

                            break;
                        }
                    }

                    setIdle();
                }
            }
        } // end of _MarginHandler
    } // end of ZPrintPreviewControl

    /**
     *  ZPrintPreview._PageCanvas
     */
    class _PageCanvas extends JPanel {
        _PageCanvas() {
            setBackground(Color.white);
            setBorder(new MatteBorder(1, 1, 2, 2, Color.black));
            this.addComponentListener(new ComponentAdapter() {
                public void componentShown(ComponentEvent e) {
                    ((JComponent) e.getSource()).requestFocus();
                }
            });
        }

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        public boolean isFocusTraversable() {
            return true;
        }

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        public Dimension getPreferredSize() {
            float scale = doc.getScale();
            int dx = (int) (doc.getPageFormat().getWidth() * scale);
            int dy = (int) (doc.getPageFormat().getHeight() * scale);
            int x = (getWidth() - dx) / 2;
            int y = (getHeight() - dy) / 2;

            if (x < 0) {
                x = 0;
            }

            if (y < 0) {
                y = 0;
            }

            return new Dimension(dx, dy); //ns;
        }

        /**
         * DOCUMENT ME!
         *
         * @param g
         */
        public void paintComponent(Graphics g) {
            super.paintComponent(g);

            Graphics2D g2 = (Graphics2D) g;
            doc.paint(g2);
            paintBorder(g);

            if (marginable) {
                if (marginersDirty) {
                    recreateMarginers();
                }

                for (int i = 0; i < marginLines.size(); i++)
                    ((ZShape) marginLines.get(i)).paint(g2);

                g2.setColor(Color.gray);

                for (int i = 0; i < marginers.size(); i++) {
                    ZShape.Rectangle r = (ZShape.Rectangle) marginers.get(i);
                    g2.fillRect(r.left, r.top, r.right - r.left + 1, r.bottom - r.top + 1);
                }
            }
        }
    } // end of _PageCanvas

    /**
     * ZPrintPreview._PageContainer
     */
    private class _PageContainer extends JPanel {
        /**
         * DOCUMENT ME!
         *
         * @return
         */
        public Dimension getMaximumSize() {
            return getPreferredSize();
        }

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        public Dimension getMinimumSize() {
            return getPreferredSize();
        }

        /**
         * DOCUMENT ME!
         *
         * @return
         */
        public Dimension getPreferredSize() {
            Dimension ps = getParent().getSize();
            float scale = doc.getScale();
            int dx = (int) (doc.getPageFormat().getWidth() * scale);
            int dy = (int) (doc.getPageFormat().getHeight() * scale);
            JScrollBar sb = getHorizontalScrollBar();

            if (dx <= ps.getWidth()) {
                sb.setVisible(false);
            } else {
                sb.setVisible(true);
            }

            sb = getVerticalScrollBar();

            if (dy <= ps.getHeight()) {
                sb.setVisible(false);
            } else {
                sb.setVisible(true);
            }

            return new Dimension(dx, dy);
        }

        /**
         * DOCUMENT ME!
         */
        public void doLayout() {
            float scale = doc.getScale();
            int dx = (int) (doc.getPageFormat().getWidth() * scale);
            int dy = (int) (doc.getPageFormat().getHeight() * scale);
            int x = (getWidth() - dx) / 2;
            int y = (getHeight() - dy) / 2;

            if (x < 0) {
                x = 0;
            }

            if (y < 0) {
                y = 0;
            }

            getComponent(0).setBounds(x, y, dx, dy);
        }
    } // end of _PageContainer
}

⌨️ 快捷键说明

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