亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

SWT(JFace) 打印功能

2020-01-31 16:51:04
字體:
來源:轉載
供稿:網友
演示代碼如下:
復制代碼 代碼如下:

package swt_jface.demo11;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.printing.PrintDialog;
import org.eclipse.swt.printing.Printer;
import org.eclipse.swt.printing.PrinterData;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class SimplePrint {
    Display display = new Display();
    Shell shell = new Shell(display);
    public SimplePrint() {
        shell.pack();
        shell.open();
        PrintDialog dialog = new PrintDialog(shell);
        PrinterData printerData = dialog.open();
        if(printerData != null) {
            Printer printer = new Printer(printerData);
            if(printer.startJob("Text")) {
                GC gc = new GC(printer);
                if(printer.startPage()) {
                    gc.drawString("Eclipse", 200, 200);
                    printer.endPage();
                }
                gc.dispose();
                printer.endJob();
            }
            printer.dispose();
            System.out.println("Print job done.");
        }
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }
    public static void main(String[] args) {
        new SimplePrint();
    }
}

常規Main菜單加入打印按鈕:
復制代碼 代碼如下:

package swt_jface.demo11;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.jface.window.WindowManager;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.custom.StyledTextPrintOptions;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.printing.PrintDialog;
import org.eclipse.swt.printing.Printer;
import org.eclipse.swt.printing.PrinterData;
import org.eclipse.swt.widgets.ColorDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.FontDialog;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class Main {

    ApplicationWindow applicationWindow;
    WindowManager manager;

    StyledTextPrintOptions styledTextPrintOptions;
    StyledText styledText;

    Display display;
    Shell shell;
    Text text;
    Font font;
    Color foregroundColor, backgroundColor;

    Printer printer;
    GC gc;
    Font printerFont;
    Color printerForegroundColor, printerBackgroundColor;
    int lineHeight = 0;
    int tabWidth = 0;
    int leftMargin, rightMargin, topMargin, bottomMargin;
    int x, y;
    int index, end;
    String textToPrint;
    String tabs;
    StringBuffer wordBuffer;
    public static void main(String[] args) {
        new Main().open();
    }

    void open() {
        display = new Display();
        font = new Font(display, "Courier", 10, SWT.NORMAL);
        foregroundColor = display.getSystemColor(SWT.COLOR_BLACK);
        backgroundColor = display.getSystemColor(SWT.COLOR_WHITE);
        shell = new Shell(display);
        shell.setLayout(new FillLayout());
        shell.setText("Print Text");
        shell.setMaximized(true);
        text = new Text(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
        text.setFont(font);
        text.setForeground(foregroundColor);
        text.setBackground(backgroundColor);

        Menu menuBar = new Menu(shell, SWT.BAR);
        shell.setMenuBar(menuBar);
        MenuItem item = new MenuItem(menuBar, SWT.CASCADE);
        item.setText("&File");
        Menu fileMenu = new Menu(shell, SWT.DROP_DOWN);
        item.setMenu(fileMenu);
        item = new MenuItem(fileMenu, SWT.PUSH);
        item.setText("&Open...");
        item.setAccelerator(SWT.CTRL + 'O');
        item.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                menuOpen();
            }
        });
        item = new MenuItem(fileMenu, SWT.PUSH);
        item.setText("Font...");
        item.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                menuFont();
            }
        });
        item = new MenuItem(fileMenu, SWT.PUSH);
        item.setText("Foreground Color...");
        item.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                menuForegroundColor();
            }
        });
        item = new MenuItem(fileMenu, SWT.PUSH);
        item.setText("Background Color...");
        item.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                menuBackgroundColor();
            }
        });
        item = new MenuItem(fileMenu, SWT.PUSH);
        item.setText("&Print...");
        item.setAccelerator(SWT.CTRL + 'P');
        item.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                menuPrint();
            }
        });
        new MenuItem(fileMenu, SWT.SEPARATOR);
        item = new MenuItem(fileMenu, SWT.PUSH);
        item.setText("E&xit");
        item.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                System.exit(0);
            }
        });

        shell.pack();
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) display.sleep();
        }
        if (font != null) font.dispose();
        if (foregroundColor != null) foregroundColor.dispose();
        if (backgroundColor != null) backgroundColor.dispose();
    }

    void menuOpen() {
        final String textString;
        FileDialog dialog = new FileDialog(shell, SWT.OPEN);
        dialog.setFilterExtensions(new String[] {"*.java", "*.*"});
        String name = dialog.open();
        if ((name == null) || (name.length() == 0)) return;

        try {
            File file = new File(name);
            FileInputStream stream= new FileInputStream(file.getPath());
            try {
                Reader in = new BufferedReader(new InputStreamReader(stream));
                char[] readBuffer= new char[2048];
                StringBuffer buffer= new StringBuffer((int) file.length());
                int n;
                while ((n = in.read(readBuffer)) > 0) {
                    buffer.append(readBuffer, 0, n);
                }
                textString = buffer.toString();
                stream.close();
            } catch (IOException e) {
                MessageBox box = new MessageBox(shell, SWT.ICON_ERROR);
                box.setMessage("Error reading file:/n" + name);
                box.open();
                return;
            }
        } catch (FileNotFoundException e) {
            MessageBox box = new MessageBox(shell, SWT.ICON_ERROR);
            box.setMessage("File not found:/n" + name);
            box.open();
            return;
        }    
        text.setText(textString);
    }
    void menuFont() {
        FontDialog fontDialog = new FontDialog(shell);
        fontDialog.setFontList(font.getFontData());
        FontData fontData = fontDialog.open();
        if (fontData != null) {
            if (font != null) font.dispose();
            font = new Font(display, fontData);
            text.setFont(font);
        }
    }
    void menuForegroundColor() {
        ColorDialog colorDialog = new ColorDialog(shell);
        colorDialog.setRGB(foregroundColor.getRGB());
        RGB rgb = colorDialog.open();
        if (rgb != null) {
            if (foregroundColor != null) foregroundColor.dispose();
            foregroundColor = new Color(display, rgb);
            text.setForeground(foregroundColor);
        }
    }
    void menuBackgroundColor() {
        ColorDialog colorDialog = new ColorDialog(shell);
        colorDialog.setRGB(backgroundColor.getRGB());
        RGB rgb = colorDialog.open();
        if (rgb != null) {
            if (backgroundColor != null) backgroundColor.dispose();
            backgroundColor = new Color(display, rgb);
            text.setBackground(backgroundColor);
        }
    }
    void menuPrint() {
        PrintDialog dialog = new PrintDialog(shell, SWT.NULL);
        PrinterData data = dialog.open();
        if (data == null) return;
        if (data.printToFile) {
            data.fileName = "print.out";
        }

        textToPrint = text.getText();
        printer = new Printer(data);
        Thread printingThread = new Thread("Printing") {
            public void run() {
                print(printer);
                printer.dispose();
            }
        };
        printingThread.start();
    }

    void print(Printer printer) {
        if (printer.startJob("Text")) {
            Rectangle clientArea = printer.getClientArea();
            Rectangle trim = printer.computeTrim(0, 0, 0, 0);
            Point dpi = printer.getDPI();
            leftMargin = dpi.x + trim.x;
            rightMargin = clientArea.width - dpi.x + trim.x + trim.width;
            topMargin = dpi.y + trim.y;
            bottomMargin = clientArea.height - dpi.y + trim.y + trim.height;

            int tabSize = 4;
            StringBuffer tabBuffer = new StringBuffer(tabSize);
            for (int i = 0; i < tabSize; i++) tabBuffer.append(' ');
            tabs = tabBuffer.toString();
            gc = new GC(printer);

            FontData fontData = font.getFontData()[0];
            printerFont = new Font(printer, fontData.getName(), fontData.getHeight(), fontData.getStyle());
            gc.setFont(printerFont);
            tabWidth = gc.stringExtent(tabs).x;
            lineHeight = gc.getFontMetrics().getHeight();

            RGB rgb = foregroundColor.getRGB();
            printerForegroundColor = new Color(printer, rgb);
            gc.setForeground(printerForegroundColor);

            rgb = backgroundColor.getRGB();
            printerBackgroundColor = new Color(printer, rgb);
            gc.setBackground(printerBackgroundColor);

            printText();
            printer.endJob();
            printerFont.dispose();
            printerForegroundColor.dispose();
            printerBackgroundColor.dispose();
            gc.dispose();
        }
    }

    void printText() {
        printer.startPage();
        wordBuffer = new StringBuffer();
        x = leftMargin;
        y = topMargin;
        index = 0;
        end = textToPrint.length();
        while (index < end) {
            char c = textToPrint.charAt(index);
            index++;
            if (c != 0) {
                if (c == 0x0a || c == 0x0d) {
                    if (c == 0x0d && index < end && textToPrint.charAt(index) == 0x0a) {
                        index++;
                    }
                    printWordBuffer();
                    newline();
                } else {
                    if (c != '/t') {
                        wordBuffer.append(c);
                    }
                    if (Character.isWhitespace(c)) {
                        printWordBuffer();
                        if (c == '/t') {
                            x += tabWidth;
                        }
                    }
                }
            }
        }
        if (y + lineHeight <= bottomMargin) {
            printer.endPage();
        }
    }
    void printWordBuffer() {
        if (wordBuffer.length() > 0) {
            String word = wordBuffer.toString();
            int wordWidth = gc.stringExtent(word).x;
            if (x + wordWidth > rightMargin) {
                newline();
            }
            gc.drawString(word, x, y, false);
            x += wordWidth;
            wordBuffer = new StringBuffer();
        }
    }
    void newline() {
        x = leftMargin;
        y += lineHeight;
        if (y + lineHeight > bottomMargin) {
            printer.endPage();
            if (index + 1 < end) {
                y = topMargin;
                printer.startPage();
            }
        }
    }
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久99热这里只有精品国产| 欧美日韩在线视频一区二区| 亚洲成人av中文字幕| 日韩一区二区三区xxxx| 国产精品亚洲精品| 国产精品一香蕉国产线看观看| 欧美成人剧情片在线观看| 欧美精品久久久久久久久| 国产欧美日韩中文字幕在线| 亚洲国产欧美久久| 国产97在线|亚洲| 91色在线观看| 日韩大片在线观看视频| 国产精品免费视频xxxx| 国产一区二区丝袜| 97欧美精品一区二区三区| 国内精品中文字幕| 亚洲精品日韩在线| 草民午夜欧美限制a级福利片| 久久99久国产精品黄毛片入口| 欧美日本在线视频中文字字幕| 亚洲深夜福利在线| 欧美大秀在线观看| 久久亚洲春色中文字幕| 国产精品69久久久久| 欧美午夜丰满在线18影院| 亚洲一区二区久久久久久| 亚洲欧美制服第一页| 亚洲精品一区在线观看香蕉| 欧美日韩在线视频一区| 在线观看国产精品91| 91国偷自产一区二区三区的观看方式| 国产视频精品一区二区三区| 操日韩av在线电影| 97精品欧美一区二区三区| 亚洲大胆美女视频| 国产精品老牛影院在线观看| 欧美老女人在线视频| 久久国产一区二区三区| 中文字幕免费精品一区| 日韩视频免费中文字幕| 91高潮在线观看| 国产一区二区三区视频在线观看| 91精品国产91久久久久久久久| 久久久国产一区二区| 成人黄色免费片| 国产亚洲精品成人av久久ww| 992tv成人免费影院| 疯狂欧美牲乱大交777| 成人a视频在线观看| 国产精品69久久| 91精品国产高清久久久久久91| 久久久99久久精品女同性| 欧美激情视频一区二区| 亚洲国产精品成人va在线观看| 91国在线精品国内播放| 日韩欧美国产一区二区| 欧美激情在线一区| 日韩天堂在线视频| 日韩激情视频在线播放| 亚洲香蕉伊综合在人在线视看| 亚洲美女精品久久| 96精品视频在线| 91中文字幕在线观看| 国产精品中文字幕在线| 亚洲视频欧美视频| 亚洲第一精品夜夜躁人人爽| 98午夜经典影视| 欧美成人sm免费视频| 日韩中文字幕精品| 91亚洲精品在线| 青青精品视频播放| 成人午夜一级二级三级| 日韩成人在线观看| 伊人久久综合97精品| 国产成人亚洲综合91| 日本aⅴ大伊香蕉精品视频| 亚洲女同精品视频| 午夜精品三级视频福利| 国产v综合v亚洲欧美久久| 亚洲在线第一页| 欧美激情手机在线视频| 91精品久久久久久久久不口人| 欧美性一区二区三区| 日韩欧美高清视频| 亚洲免费精彩视频| 成人免费福利在线| 欧美日韩加勒比精品一区| 亚洲性猛交xxxxwww| 日本乱人伦a精品| 欧美日韩xxxxx| 永久免费毛片在线播放不卡| 精品欧美激情精品一区| 在线性视频日韩欧美| 久久久久久久久国产精品| 久久久久亚洲精品成人网小说| 68精品国产免费久久久久久婷婷| 亚洲国产古装精品网站| 久久久亚洲国产| 久久亚洲精品成人| 丁香五六月婷婷久久激情| 高清日韩电视剧大全免费播放在线观看| 国产日韩精品在线播放| x99av成人免费| 国产专区欧美专区| 欧美理论在线观看| 欧美成人免费在线观看| 日韩av电影在线免费播放| 久久久久北条麻妃免费看| 欧美国产日韩一区| 久久欧美在线电影| 欧美激情视频一区| 成人中心免费视频| 久久久免费高清电视剧观看| 久久久噜噜噜久久久| 欧美成人精品一区二区| 亚洲天堂日韩电影| 91av在线播放视频| 国产精品v日韩精品| 亚洲人成毛片在线播放| 成人免费淫片视频软件| 国产精品人成电影在线观看| 中文国产成人精品| 欧美日韩国产成人在线观看| 国产精品成人va在线观看| 国产精品精品视频一区二区三区| 中文字幕亚洲字幕| 日韩中文有码在线视频| 九九久久久久久久久激情| 日韩一区二区欧美| 国产91精品久久久久久久| 日本一区二区在线免费播放| 成人高h视频在线| 97国产精品免费视频| 欧美精品电影免费在线观看| 久久精品视频在线| 91精品国产免费久久久久久| 国内精品久久久久久影视8| 欧美一二三视频| 亚洲毛片一区二区| 日韩视频精品在线| 欧美日韩在线免费| 亚洲天堂av在线免费| 国产一区欧美二区三区| 91综合免费在线| 爽爽爽爽爽爽爽成人免费观看| 国产一区二区丝袜| 亚洲国产成人精品电影| 欧美一乱一性一交一视频| 久久久av免费| 日韩成人中文电影| 96sao精品视频在线观看| 国产精品久久久久久久久久99| 8x海外华人永久免费日韩内陆视频| 亚洲图片欧美午夜| 欧美黑人国产人伦爽爽爽| 久久成人这里只有精品| 日韩电影免费观看在线| 欧美亚洲国产视频| 久久久久久久91| 日韩中文理论片| 欧美一级视频在线观看| 国产91精品在线播放| 中文亚洲视频在线|