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

📄 pdfscrollpane.java

📁 Java生成PDF Java生成PDF Java生成PDF
💻 JAVA
字号:
// $Id: PDFScrollPane.java,v 1.18 2006/09/28 14:38:07 mike Exp $package org.faceless.pdf2.viewer;import org.faceless.pdf2.PDF;import javax.swing.*;import java.awt.*;import java.awt.event.*;/** * <p> * The <code>PDFScrollPane</code> provides a scrollable view of a PDF document. * A <code>PDFScrollPane</code> manages a viewport, horizontal and vertical scroll bars. * Note that <code>PDFScrollPane</code> can only contain {@link PDF} objects. * </p><p> * Initially <code>PDFScrollPane</code>'s viewport is empty - here is an example of how * to initialise the <code>PDFViewport</code> to display {@link PDF} objects.</p> * </p><pre class=example> * PDF pdf = loadMyPDF();       // Create your PDF somehow (probably from a PDFReader) * PDFScrollPane scrollpane = new PDFScrollPane(); * PDFViewport viewport = scrollpane.getViewport(); * viewport.setDocument(pdf); * </pre> * <p>This PDF scrollable view can be incorporated in to any Swing application.</p> * <p><i> * This code is copyright the Big Faceless Organization. You're welcome to * use, modify and distribute it in any form in your own projects, provided * those projects continue to make use of the Big Faceless PDF library. * </i></p> * * @since 2.5 */public class PDFScrollPane extends JPanel implements PDFViewport.ViewportObserver{    private JScrollBar sbv, sbh;                // Vertical/Horizontal scrollbars    private PDFViewport view;    /**     * Creates a new, empty PDF scroll pane.     */    public PDFScrollPane() {        this(new PDFViewport());    }    /**     * Creates a new, empty PDF scroll pane with the     * specified {@link PDFViewport}.     * @param viewport the viewport to use in this scrollpane     * @since 2.7.3     */    public PDFScrollPane(PDFViewport viewport) {        super();        setDoubleBuffered(true);        addComponentListener(new PDFPaneListener());        sbv = new JScrollBar(JScrollBar.VERTICAL);        sbh = new JScrollBar(JScrollBar.HORIZONTAL);        addMouseWheelListener(new VerticalWheelListener());        sbh.setMinimum(0);        sbh.setBlockIncrement(15);        sbh.setUnitIncrement(15);        sbh.addAdjustmentListener(new HorizontalListener());        sbv.setMinimum(0);        sbv.setBlockIncrement(15);        sbv.setUnitIncrement(15);        sbv.addAdjustmentListener(new VerticalListener());        setLayout(new BorderLayout());        sbv.setVisible(true);        sbh.setVisible(true);        this.view = viewport;        view.addObserver(this);        add(view, BorderLayout.CENTER);        add(sbv, BorderLayout.EAST);        add(sbh, BorderLayout.SOUTH);    }    public void viewportChanged(double x, double y) {        final int sx = (int)x;        final int sy = (int)y;        Runnable UpdateBars = new Runnable() {            public void run() {                sbh.setMaximum(view.getPageWidth());                sbv.setMaximum(view.getPageHeight());                sbh.setValue(sx);                sbv.setValue(sy);                sbh.setVisibleAmount((int)view.getVisibleWidth());                sbv.setVisibleAmount((int)view.getVisibleHeight());            }        };        SwingUtilities.invokeLater(UpdateBars);    }    /**     * Returns the current {@link PDFViewport}.     *     * @return the viewport property     */    public PDFViewport getViewport() {        return view;    }    class VerticalListener implements AdjustmentListener {        public void adjustmentValueChanged(AdjustmentEvent e) {            view.setViewPosition(sbh.getValue(), sbv.getValue());        }    }    class HorizontalListener implements AdjustmentListener {        public void adjustmentValueChanged(AdjustmentEvent e) {            view.setViewPosition(sbh.getValue(), sbv.getValue());        }    }    class PDFPaneListener extends ComponentAdapter {        public void componentResized(ComponentEvent e) {            int sx = (int)Math.min(view.getMaxScrollX(), sbh.getValue());            int sy = (int)Math.min(view.getMaxScrollY(), sbv.getValue());            sbh.setValue(sx);            sbv.setValue(sy);            view.setViewPosition(sbh.getValue(), sbv.getValue());            Runnable UpdateBars = new Runnable() {                public void run() {                    sbh.setVisibleAmount((int)view.getVisibleWidth());                    sbv.setVisibleAmount((int)view.getVisibleHeight());                }            };            SwingUtilities.invokeLater(UpdateBars);        }    }    class VerticalWheelListener implements MouseWheelListener {        public void mouseWheelMoved(MouseWheelEvent e) {            if (e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL) {                int totalScrollAmount = e.getUnitsToScroll() * sbv.getUnitIncrement();                sbv.setValue(sbv.getValue() + totalScrollAmount);            }        }    }    public void writeAsTIFFComplete() { }}

⌨️ 快捷键说明

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