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

📄 zsheetview.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
 */
/*
 * put your module comment here
 * formatted with JxBeauty (c) johann.langhofer@nextra.at
 */
package ezcell;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.Point;
import java.awt.dnd.Autoscroll;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragSource;
import java.awt.dnd.DropTarget;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;

import java.util.Vector;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollBar;


/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2001</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */
public class ZSheetView extends JPanel {

    ZSheetState modal;
    ZSheetCanvas canvas;
    ZSheetStateControl control;

    // ui
    _Canvas internalCanvas;
    JScrollBar vertBar;
    JScrollBar horzBar;
    JPanel bottom;

    ZSheetView(ZSheetState us) {
        modal = us;
        modal.addListener(new _ZSheetStateListener());
        canvas = new ZSheetCanvas(modal);
        control = new ZSheetStateControl(modal);
        init();
    }

    /**
     * DOCUMENT ME!
     */
    void init() {
        vertBar = new JScrollBar(JScrollBar.VERTICAL, 1, 1, 1, modal.getSheet().getLastRow());
        horzBar = new JScrollBar(JScrollBar.HORIZONTAL, 1, 1, 1, modal.getSheet().getLastCol());
        internalCanvas = new _Canvas(canvas);
        internalCanvas.setLayout(null);
        horzBar.addAdjustmentListener(control);
        vertBar.addAdjustmentListener(control);
        internalCanvas.setLayout(null);


        // hook the listeners of mouse event
        internalCanvas.addMouseMotionListener(control);
        internalCanvas.addMouseListener(control);
        internalCanvas.addKeyListener(control);
        internalCanvas.addComponentListener(control);
        internalCanvas.addListener(control);

        // register dnd support
        DragSource dragSource = DragSource.getDefaultDragSource();
        dragSource.createDefaultDragGestureRecognizer(internalCanvas,
                                                      DnDConstants.ACTION_COPY_OR_MOVE, control);
        new DropTarget(internalCanvas, DnDConstants.ACTION_MOVE, control);


        // add a vertical scroll bar in the east
        setLayout(new BorderLayout());
        add(BorderLayout.EAST, vertBar);


        // add a horiztal scroll bar in the south
        bottom = new JPanel();
        bottom.setLayout(new BorderLayout());
        bottom.add(horzBar, BorderLayout.CENTER);

        // pad a button in the corner
        JLabel corner = new JLabel();
        corner.setPreferredSize(new Dimension(16, 10));
        bottom.add(corner, BorderLayout.EAST);
        add(BorderLayout.SOUTH, bottom);


        // add _canvas into center
        //                 _canvas.addComponentListener(this);
        canvas.setComponent(internalCanvas);
        add(BorderLayout.CENTER, internalCanvas);
        this.addFocusListener(control);
        control.loadShortKeys(internalCanvas);
    }

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

    /**
     * DOCUMENT ME!
     *
     * @param visible
     */
    public void setScrollbarVisible(boolean visible) {
        if (visible) {
            if (!contain(vertBar)) {
                add(BorderLayout.EAST, vertBar);
            }

            if (!contain(bottom)) {
                add(BorderLayout.SOUTH, bottom);
            }
        } else {
            remove(vertBar);
            remove(bottom);
        }

        this.revalidate();
    }

    /**
     * DOCUMENT ME!
     *
     * @param comp
     *
     * @return
     */
    private boolean contain(Component comp) {
        for (int i = 0; i < this.getComponentCount(); i++)
            if (this.getComponent(i) == comp) {
                return true;
            }

        return false;
    }

    class _ZSheetStateListener extends ZSheetStateAdapter {
        /**
         * DOCUMENT ME!
         *
         * @param modal
         */
        public void uiStateChanged(ZSheetState modal) {
            boolean changeUI = false;

            if (modal.getVisibleCells().left != horzBar.getValue()) {
                horzBar.setValue(modal.getVisibleCells().left);
                changeUI = true;
            }

            if (modal.getVisibleCells().top != horzBar.getValue()) {
                vertBar.setValue(modal.getVisibleCells().top);
                changeUI = true;
            }

           // if (changeUI) {
           //     updateUI();
          // }
        }
    }
}

class _Canvas extends JPanel implements Autoscroll {
    public Insets scrollInsets = new Insets(20, 20, 20, 20);

    /**
     * put your documentation comment here
     * @param comp
     */
    private ZSheetCanvas delegate;
    private Vector listeners = new Vector();

    _Canvas(ZSheetCanvas canvas) {
        super();
        delegate = canvas;
        this.addComponentListener(new ComponentAdapter() {
            public void componentShown(ComponentEvent e) {
                ((JComponent) e.getSource()).requestFocus();
            }
        });
    }

    /**
     * DOCUMENT ME!
     *
     * @return
     */
    public Insets getAutoscrollInsets() {
        //   scrollInsets.right = horzBar.getMaximum();
        //    scrollInsets.bottom = vertBar.getMaximum();
        return scrollInsets;
    }

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

    /**
     * DOCUMENT ME!
     *
     * @param location
     */
    public synchronized void autoscroll(Point location) {
        for (int i = 0; i < listeners.size(); i++) {
            ZScrollListener lst = (ZScrollListener) listeners.get(i);
            lst.scrolled(this, location, scrollInsets);
        }
    }

    /**
     * DOCUMENT ME!
     *
     * @param lst
     */
    public void addListener(ZScrollListener lst) {
        listeners.add(lst);
    }

    /**
     * DOCUMENT ME!
     *
     * @param lst
     */
    public void removeListener(ZScrollListener lst) {
        listeners.remove(lst);
    }

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

        if (delegate == null) {
            return;
        }

        delegate.paint((Graphics2D) comp);
    }
}

interface ZScrollListener {
    /**
     * DOCUMENT ME!
     *
     * @param object
     * @param p
     * @param inset
     */
    public void scrolled(Component object, Point p, Insets inset);
}

⌨️ 快捷键说明

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