<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
    import java.awt.*;
    import java.awt.print.*;
    import java.io.*;

    /**
    * Utility class to print some lines of text to the default printer. Uses some
    * default font settings, and gets the page size from the PrinterJob object.
    *
    * Note: this little example class does not handle pagination. All the text must
    * fit on a single page.
    *
    * This class can also be used as a standalone utility. If the main method is
    * invoked, it reads lines of text from System.in, and prints them to the
    * default printer.
    */

    public class PrintGIF implements Printable {
    /**
    * Default font size, 12 point
    */
    public static final int DEFAULT_FONT_SIZE = 12;

    /**
    * Default type name, Serif
    */
    public static final String DEFAULT_FONT_NAME = "Serif";

    private PrinterJob job;

    private String typeName;

    private int typeSize;

    private Font typeFont;

    private Font typeFontBold;

    private String[] header;

    private String[] body;

    /**
    * Create a TextPrinter object with the default type font and size.
    */
    public PrintGIF() {
    this(DEFAULT_FONT_NAME, DEFAULT_FONT_SIZE);
    }

    /**
    * Create a TextPrinter object ready to print text with a given font and
    * type size.
    */
    public PrintGIF(String name, int size) {
    if (size < 3 || size > 127) {
    throw new IllegalArgumentException("Type size out of range");
    }
    typeName = name;
    typeSize = size;
    typeFont = new Font(typeName, Font.PLAIN, typeSize);
    typeFontBold = new Font(typeName, Font.BOLD, typeSize);
    job = null;
    }

    /**
    * Initialize the printer job.
    */
    protected void init() {
    job = PrinterJob.getPrinterJob();
    }

    /**
    * Initialize the print job, and return the base number of characters per
    * line with the established font size and font. This is really just a
    * guess, because we can't get the font metrics yet.
    */
    public int getCharsPerLine() {
    if (job == null) {
    init();
    }
    PageFormat pf;
    pf = job.defaultPage();
    double width = pf.getImageableWidth(); // in 72nd of a pt
    double ptsize = typeFont.getSize();
    double ptwid = ptsize * 3 / 4;
    double cnt = (width / ptwid);
    return (int) (Math.round(cnt));
    }

    /**
    * Print some text. Headers are printed first, in bold, followed by the body
    * text, in plain style. If the boolean argument interactive is set to true,
    * then the printer dialog gets shown.
    *
    * Either array may be null, in which case they are treated as empty.
    *
    * This method returns true if printing was initiated, or false if the user
    * cancelled printer. This method may throw PrinterException if printing
    * could not be started.
    */
    public boolean doPrint(String[] header, String[] body, boolean interactive)
    throws PrinterException {
    if (job == null) {
    init();
    }
    if (interactive)
    try {
    if (job.printDialog()) {
    // we are going to print
    } else {
    // we are not going to print
    return false;
    }
    } catch (Exception pe) {
    System.err.println("Could not pop up print dialog");
    // assume user wants to print anyway...
    }

    job.setPrintable(this);
    this.header = header;
    this.body = body;
    job.print();
    job = null; // we are no longer initialized
    return true;
    }

    /**
    * Perform printing according to the Java printing model. NEVER CALL THIS
    * DIRECTLY! It will be called by the PrinterJob as necessary. This method
    * always returns Printable.NO_SUCH_PAGE for any page number greater than 0.
    */
    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
    throws PrinterException {
    if (pageIndex != 0) {
    return NO_SUCH_PAGE;
    }
    FontMetrics fm;
    graphics.setFont(typeFont);
    graphics.setColor(Color.black);
    fm = graphics.getFontMetrics();

    // fill in geometric and rendering guts here
    int i;
    double x, y;
    x = pageFormat.getImageableX();
    y = pageFormat.getImageableY() + fm.getMaxAscent();

    // do the headings
    if (header != null) {
    graphics.setFont(typeFontBold);
    for (i = 0; i < header.length; i++) {
    graphics.drawString(header[i], (int) x, (int) y);
    y += fm.getHeight();
    }
    }

    // do the body
    if (body != null) {
    graphics.setFont(typeFont);
    for (i = 0; i < body.length; i++) {
    graphics.drawString(body[i], (int) x, (int) y);
    y += fm.getHeight();
    }
    }

    return PAGE_EXISTS;
    }

    /**
    * Main method for testing. This main method sets up a header of
    * "PRINTER TEST" and reads System.in to get body text.
    */
    public static void main(String[] args) {
    BufferedReader br;
    java.util.List lines;

    TextPrinter tp;
    tp = new TextPrinter();
    lines = new java.util.ArrayList();
    try {
    InputStreamReader isr;
    isr = new InputStreamReader(System.in);
    br = new BufferedReader(isr);
    String line;
    for (line = br.readLine(); line != null; line = br.readLine()) {
    lines.add(line);
    }
    br.close();

    System.out.println("chars per line: " + tp.getCharsPerLine());
    System.out.println("attempting to print...");
    String[] headers = new String[1];
    headers[0] = "PRINT TEST";
    String[] body = new String[lines.size()];
    for (int ix = 0; ix < lines.size(); ix++) {
    body[ix] = (String) (lines.get(ix));
    }
    boolean didit = tp.doPrint(headers, body, true);
    System.out.println("doPrint returns " + didit);
    } catch (Exception e) {
    System.err.println("Error printing: " + e);
    e.printStackTrace();
    }
    }
    }














    posted on 2008-08-05 17:13 jinfeng_wang 閱讀(277) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精品自在在线观看| yy6080久久亚洲精品| 亚洲av鲁丝一区二区三区| 人人爽人人爽人人片A免费| 国产又粗又猛又爽又黄的免费视频| 亚洲综合久久一本伊伊区| 国产成人免费午夜在线观看| 亚洲视频免费播放| 99久久99这里只有免费费精品| 亚洲精品中文字幕麻豆| aa级一级天堂片免费观看| 亚洲一区二区久久| 免费看香港一级毛片| 久久精品亚洲日本波多野结衣| 国产又大又长又粗又硬的免费视频| 亚洲av纯肉无码精品动漫| 亚洲VA综合VA国产产VA中| 国产黄在线观看免费观看不卡| 国产成人亚洲精品青草天美| 嫩草影院在线播放www免费观看| 免费国产va视频永久在线观看| 免费a级毛片大学生免费观看| 成人一级免费视频| 亚洲AV无码精品色午夜果冻不卡| 2020因为爱你带字幕免费观看全集| 亚洲乱码一区av春药高潮| 日本免费一区二区三区最新 | 香蕉免费一区二区三区| 亚洲第一二三四区| 成人永久福利免费观看| GOGOGO免费观看国语| 亚洲国产高清在线| 成人毛片18女人毛片免费| 一边摸一边桶一边脱免费视频| 亚洲成AV人片在线观看| 成人人观看的免费毛片| 老司机精品免费视频| 国产91在线|亚洲| 久久精品国产亚洲AV不卡| 四虎在线最新永久免费| 老司机午夜在线视频免费|