亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? printoptiondialog.java

?? OpenSwing的經典示例
?? JAVA
字號:
package com.sunking.swing.print;

import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import javax.swing.*;
import java.awt.print.Book.*;

import com.sunking.swing.*;

/**
 * <p>Title: OpenSwing</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author <a href="mailto:sunkingxie@hotmail.com">SunKing</a>
 * @version 1.0
 */
public class PrintOptionDialog
    extends JFrame
    implements ActionListener {
    private PageFormat pageFormat;
    private Book book;

    JToolBar toolbar = new JToolBar();
    JButton bttMulti = new JButton(OpenSwingUtil.getOpenSwingImage(
        "multipage.gif", new ImageIcon()));
    JButton bttSingle = new JButton(OpenSwingUtil.getOpenSwingImage(
        "singlepage.gif", new ImageIcon()));
    JButton bttPrint = new JButton(OpenSwingUtil.getOpenSwingImage(
        "print.gif", new ImageIcon()));
    JPanel canvas = new JPanel(new FlowLayout());
    JScrollPane sp = new JScrollPane(canvas, 22, 32) {
        public void doLayout() {
            super.doLayout();
            JScrollBar bar = this.getHorizontalScrollBar();
            bar.setValue( (bar.getMaximum() - bar.getVisibleAmount()) / 2);
        }
    };
    JButton bttPageSetup = new JButton(OpenSwingUtil.getOpenSwingImage(
        "page.gif", new ImageIcon()));
    JButton bttConfirm = new JButton();
    JComboBox boxResize = new JComboBox(
        new String[] {
        "500%", "250%", "150%", "100%", "75%",
        "50%", "25%", "10%",
        OpenSwingUtil.getOpenResource("PageWidth"),
        OpenSwingUtil.getOpenResource("FontWidth"),
        OpenSwingUtil.getOpenResource("OnePage"),
        OpenSwingUtil.getOpenResource("DoublePage")
    });
    MultiPagePopup popupMulti = new MultiPagePopup();

    boolean popupIsLastClick = false;

    Window owner;
    public PrintOptionDialog(Window owner, String title) {
        super(title);
        this.owner = owner;
        boxResize.setMaximumSize(new Dimension(200, 33));
        boxResize.setMinimumSize(new Dimension(200, 33));
        boxResize.setPreferredSize(new Dimension(200, 33));
        boxResize.addActionListener(this);
        toolbar.add(bttPageSetup, null);
        toolbar.add(bttPrint, null);
        toolbar.add(bttSingle, null);
        toolbar.add(bttMulti, null);
        toolbar.add(boxResize, null);
        toolbar.add(bttConfirm, null);
        bttConfirm.setMaximumSize(new Dimension(60, 33));
        bttConfirm.setMinimumSize(new Dimension(60, 33));
        bttConfirm.setPreferredSize(new Dimension(60, 33));

        bttSingle.addActionListener(this);
        bttMulti.addActionListener(this);

        this.getContentPane().add(toolbar, BorderLayout.NORTH);
        this.getContentPane().add(sp, BorderLayout.CENTER);
        canvas.setLayout(new BoxLayout(canvas, BoxLayout.PAGE_AXIS));
        popupMulti.setAction(new PopupAction());
        boxResize.setSelectedIndex(10);
        sp.addComponentListener(new ComponentAdapter() {
            public void componentResized(ComponentEvent e) {
                layoutPreview();
            }
        });
    }

    /*int ownerExtendedState = 0;
    public void show() {
        super.show();
        if (owner == null)return;
        if (owner instanceof Frame) {
            ownerExtendedState = ( (Frame) owner).getExtendedState();
            ( (Frame) owner).setExtendedState(JFrame.ICONIFIED);
            toFront();
            requestFocus();
        }
    }

    public void hide() {
        super.hide();
        if (owner == null)return;
        if (owner instanceof Frame) {
            ( (Frame) owner).setExtendedState(ownerExtendedState);
            ( (Frame) owner).toFront();
            ( (Frame) owner).requestFocus();
        }
    }*/

    /**
     * 設置確定\取消\頁面設置\打印\打印選擇圖表的Action
     * @param confirmAction
     * @param cancelAction
     * @param printAction
     * @param pageSetAction
     * @param printSelectionAction
     */
    public void setActions(Action confirmAction, Action printAction,
                           Action pageSetAction) {
        bttConfirm.setAction(confirmAction);
        bttPrint.addActionListener(printAction);
        bttPageSetup.addActionListener(pageSetAction);
    }

    public void setPageFormat(PageFormat pageFormat) {
        this.pageFormat = pageFormat;
    }

    public PageFormat getPageFormat() {
        return this.pageFormat;
    }

    JPanel pPreviews[];
    public void setBook(Book book) {
        this.book = book;
        pPreviews = getPreviewPanel(book);
        layoutPreview();
    }

    private JPanel[] getPreviewPanel(Book book) {
        JPanel result[] = new JPanel[book.getNumberOfPages()];
        for (int i = 0; i < book.getNumberOfPages(); i++) {
            PreviewCanvas previewCanvas = new PreviewCanvas(book, i);
            previewCanvas.setBackground(Color.white);
            previewCanvas.setPreferredSize(new Dimension(
                (int) pageFormat.getWidth(), (int) pageFormat.getHeight()));
            JPanel p = new JPanel(new BorderLayout());
            p.setBorder(BorderFactory.createEmptyBorder(0, 0, 3, 3));
            p.setBackground(Color.gray);
            p.add(previewCanvas);
            result[i] = p;
        }
        return result;
    }

    public void actionPerformed(ActionEvent e) {
        Object obj = e.getSource();
        if (obj == bttMulti) {
            popupMulti.show(bttMulti, 0, bttMulti.getHeight());
        }
        else if (obj == bttSingle) {
            boxResize.setSelectedIndex(10);
        }
        else if (obj == boxResize) {
            popupIsLastClick = false;
            layoutPreview();
        }
    }

    class PopupAction
        extends AbstractAction {
        public void actionPerformed(ActionEvent e) {
            popupIsLastClick = true;
            layoutPreview();
        }
    }

    /**
     * 根據當前所設置的選項排列預覽面板
     */
    public void layoutPreview() {
        if (pageFormat == null || pPreviews == null || pPreviews.length == 0)return;
        int spW = sp.getWidth() - sp.getVerticalScrollBar().getWidth() - 20;
        int spH = sp.getHeight() - sp.getHorizontalScrollBar().getHeight() - 20;
        double pw = pageFormat.getWidth();
        double ph = pageFormat.getHeight();

        int col = 0, row = 1;

        int w = getPreviewWidth();
        int h = (int) (ph * w / pw);

        canvas.removeAll();

        //多頁彈出式菜單\單頁\多頁\和寬度小于總寬度的一半的
        if (popupIsLastClick || boxResize.getSelectedIndex() > 9 ||
            w < (spW / 2)) {
            if (popupIsLastClick) {
                col = popupMulti.getVerticalPages();
                row = popupMulti.getHorizontalPages();
            }
            else if (boxResize.getSelectedIndex() == 10) col = 1;
            else if (boxResize.getSelectedIndex() == 11) col = 2;
            else col = spW / w;

            boolean isSingleLine = false;
            if (w > h) {
                w = spW / col;
                h = (int) (ph * w / pw);
            }
            else {
                h = spH / row;
                w = (int) (pw * h / ph);
                if (w * col >= spW) {
                    isSingleLine = true;
                    w = spW / col;
                    h = (int) (ph * w / pw);
                }
            }
            //按列數和預覽面板的個數求出應該有多少行
            if (col * row < pPreviews.length) {
                row = pPreviews.length / col +
                    ( (pPreviews.length % col == 0) ? 0 : 1);
            }
            int index = 0;
            for (int i = 0; i < row; i++) {
                JPanel p = new JPanel();
                for (int j = 0; j < col; j++) {
                    if (index == pPreviews.length)break; //如果已經排完了,則跳出
                    p.add(pPreviews[index]);
                    pPreviews[index].setPreferredSize(new Dimension(w, h));
                    index++;
                }
                //如果是單行單行的則為面板加入上邊界,以達到垂直居中的效果
                if (isSingleLine || row == 1) {
                    p.setPreferredSize(new Dimension(spW + 20, spH + 20));
                    p.setBorder(BorderFactory.createEmptyBorder(
                        (spH + 20 - h) / 2, -50, 0, -50
                        ));
                }
                if (p.getComponentCount() != 0) canvas.add(p);
            }
        }
        /**
         *一般的排列
         */
        else {
            for (int i = 0; i < pPreviews.length; i++) {
                JPanel p = new JPanel();
                p.add(pPreviews[i]);
                pPreviews[i].setPreferredSize(new Dimension(w, h));
                canvas.add(p);
            }
        }
        canvas.setSize(canvas.getPreferredSize());
        canvas.validate();
        System.gc();
    }

    /**
     * 根據當前所設置的選項取得預覽面板的寬度
     * @return
     */
    int getPreviewWidth() {
        int spW = sp.getWidth() - sp.getVerticalScrollBar().getWidth() - 20;
        int spH = sp.getHeight() - sp.getHorizontalScrollBar().getHeight() - 20;
        double w = pageFormat.getWidth();
        double h = pageFormat.getHeight();

        double fScale[] = {
            5, 2.5, 1.5, 1, 0.75, 0.5, 0.25, 0.1};
        int index = boxResize.getSelectedIndex();
        if (index < fScale.length) //"500%","250%","150%","100%","75%","50%","25%","10%"
            return (int) (w * fScale[index]);
        else if (index == 8) //"頁面寬度"
            return (int) spW;
        else if (index == 9) { //"文字寬度"
            double d = pageFormat.getImageableWidth();
            return (int) (w * spW / d) - 20;
        }
        else if (index == 10) { //"整頁"
            if (w > h) {
                return spW;
            }
            else {
                return (int) (w * spH / h);
            }
        }
        else { //"雙頁"
            if (w > h) {
                return spW / 2;
            }
            else {
                return (int) (w * spH / h / 2);
            }
        }
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲一区三区| 国产成人综合自拍| 在线成人免费视频| 亚洲成在人线免费| 欧美一区二区三区系列电影| 丝袜美腿高跟呻吟高潮一区| 日韩一二三四区| 国产专区欧美精品| 中文字幕一区二区三区视频| 色综合一个色综合亚洲| 午夜视频久久久久久| 日韩欧美一级在线播放| 成人午夜av电影| 亚洲综合在线五月| 欧美大片日本大片免费观看| 欧美日韩一区高清| 日韩电影一区二区三区| 国产三级精品三级| 色综合久久66| 麻豆精品在线播放| 亚洲丝袜制服诱惑| 777a∨成人精品桃花网| 国产伦精品一区二区三区视频青涩| 中文字幕av资源一区| 欧美日韩视频专区在线播放| 精品一区二区三区在线视频| 自拍偷拍亚洲综合| 日韩三级视频在线看| 99久久综合国产精品| 日本va欧美va欧美va精品| 国产三级一区二区| 欧美日韩国产一级二级| 国产白丝精品91爽爽久久| 亚洲bt欧美bt精品777| 久久人人97超碰com| 欧美日韩一区二区三区免费看| 国内成人自拍视频| 亚洲国产视频a| 欧美国产视频在线| 欧美电影免费提供在线观看| 99久久久精品| 国产麻豆视频一区二区| 亚洲成人精品一区| 亚洲欧美另类小说视频| 日韩精品自拍偷拍| 欧美色窝79yyyycom| 成人av小说网| 麻豆国产91在线播放| 夜夜嗨av一区二区三区四季av | 亚洲黄色性网站| 久久亚洲精品国产精品紫薇| 欧美视频一区在线| 成人av电影在线观看| 精品一区二区三区蜜桃| 婷婷亚洲久悠悠色悠在线播放| 日韩一区在线播放| 久久精品视频在线看| 91精品午夜视频| 在线亚洲人成电影网站色www| 国产成人午夜精品影院观看视频| 日韩精彩视频在线观看| 国产91精品露脸国语对白| 激情亚洲综合在线| 美女网站一区二区| 亚洲国产精品久久不卡毛片 | 欧美视频中文字幕| 91日韩精品一区| 成人午夜电影网站| 国产黄人亚洲片| 国产乱码一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 婷婷一区二区三区| 五月婷婷激情综合| 偷拍日韩校园综合在线| 亚洲线精品一区二区三区| 一区二区三区在线免费观看| 中文字幕在线观看一区| 国产精品久久久久一区| 欧美激情综合五月色丁香小说| 久久午夜国产精品| 日本一区二区视频在线观看| 欧美韩国一区二区| 中文一区二区完整视频在线观看| 国产欧美日韩在线视频| 中文字幕不卡在线播放| 中文字幕一区二| 亚洲精品久久久蜜桃| 亚洲国产成人高清精品| 免费三级欧美电影| 韩国女主播成人在线| 日韩欧美在线观看一区二区三区| 欧美一区二区国产| 欧美精品一区二区不卡| 国产欧美日韩在线观看| 亚洲精品一二三区| 亚洲小说欧美激情另类| 日本欧美大码aⅴ在线播放| 美女国产一区二区| 懂色av一区二区在线播放| 99久久国产免费看| 欧美日韩国产一级二级| 2019国产精品| 国产精品电影一区二区三区| 亚洲免费电影在线| 秋霞成人午夜伦在线观看| 国产伦精品一区二区三区免费 | 欧美人牲a欧美精品| 91精品国产aⅴ一区二区| 精品国产乱码久久久久久免费| 日本一区二区三区久久久久久久久不| 国产精品第四页| 亚洲444eee在线观看| 国产福利一区在线| 欧美自拍丝袜亚洲| 久久综合久久99| 亚洲一区二区三区视频在线 | 成人亚洲精品久久久久软件| 色综合久久久久综合体| 日韩免费福利电影在线观看| 国产精品久99| 免费久久精品视频| 色综合天天综合在线视频| 欧美一级欧美三级| 一区在线播放视频| 免费成人你懂的| 日本乱码高清不卡字幕| 久久精子c满五个校花| 图片区小说区国产精品视频| 成人一级视频在线观看| 日韩欧美国产电影| 亚洲精品水蜜桃| 国产在线精品视频| 欧美肥大bbwbbw高潮| 国产精品日产欧美久久久久| 久久精品免费观看| 欧美日韩亚洲综合在线 | wwwwxxxxx欧美| 午夜精品一区二区三区电影天堂 | www.成人网.com| 欧美电影免费观看高清完整版| 亚洲制服丝袜av| 99久久婷婷国产综合精品| 欧美精品一区二区蜜臀亚洲| 香蕉影视欧美成人| 在线精品亚洲一区二区不卡| 国产欧美日韩亚州综合 | 成人性生交大片免费看视频在线 | 国产网站一区二区| 奇米色一区二区| 欧美日本在线视频| 一区二区三区丝袜| 91视频国产观看| 国产精品毛片久久久久久久| 激情国产一区二区| 日韩三级av在线播放| 丝袜诱惑亚洲看片| 欧美精品九九99久久| 亚洲午夜在线电影| 日本久久电影网| 亚洲人吸女人奶水| 99re免费视频精品全部| 中文字幕欧美国产| 不卡电影免费在线播放一区| 久久久久久久网| 国产传媒日韩欧美成人| 欧美国产成人精品| 国产成人精品免费| 国产欧美日韩在线看| 丁香婷婷综合激情五月色| 久久免费精品国产久精品久久久久 | 色中色一区二区| 亚洲综合自拍偷拍| 欧美精品v日韩精品v韩国精品v| 亚洲一二三专区| 91.com视频| 精品伊人久久久久7777人| 午夜精品爽啪视频| 欧美日韩一区二区三区四区| 日韩精品一二三区| 精品欧美久久久| 国产成人精品网址| 国产精品久久免费看| 日本精品裸体写真集在线观看| 亚洲一区二区三区爽爽爽爽爽| 欧美巨大另类极品videosbest | 欧美日韩亚洲综合一区| 欧美日韩在线播放| 天天综合色天天综合色h| 91精品国产手机| 久久se精品一区二区| 久久久不卡网国产精品一区| 成人激情动漫在线观看| 亚洲男人都懂的| 91精品国产一区二区| 国产精品一区二区在线观看不卡 | 日产欧产美韩系列久久99| 日韩三级在线观看| 不卡高清视频专区| 五月激情综合色| 国产亚洲精品精华液|