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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? booktest.java

?? java源碼 java源碼 值得一看 值得一看
?? JAVA
字號(hào):
/**
   @version 1.11 2004-08-24
   @author Cay Horstmann
*/

import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.print.*;
import java.util.*;
import javax.print.*;
import javax.print.attribute.*;
import javax.swing.*;

/**
   This program demonstrates the printing of a multi-page
   book. It prints a "banner", by blowing up a text string
   to fill the entire page vertically. The program also
   contains a generic print preview dialog.
*/
public class BookTest
{  
   public static void main(String[] args)
   {  
      JFrame frame = new BookTestFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

/**
   This frame has a text field for the banner text and 
   buttons for printing, page setup, and print preview.
*/
class BookTestFrame extends JFrame
{  
   public BookTestFrame()
   {  
      setTitle("BookTest");

      text = new JTextField();
      add(text, BorderLayout.NORTH);

      attributes = new HashPrintRequestAttributeSet();

      JPanel buttonPanel = new JPanel();

      JButton printButton = new JButton("Print");
      buttonPanel.add(printButton);
      printButton.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               try
               {
                  PrinterJob job = PrinterJob.getPrinterJob();
                  job.setPageable(makeBook());
                  if (job.printDialog(attributes))
                  {  
                     job.print(attributes);
                  }
               }
               catch (PrinterException e)
               {  
                  JOptionPane.showMessageDialog(
                     BookTestFrame.this, e);
               }
            }
         });

      JButton pageSetupButton = new JButton("Page setup");
      buttonPanel.add(pageSetupButton);
      pageSetupButton.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               PrinterJob job = PrinterJob.getPrinterJob();
               pageFormat = job.pageDialog(attributes);
            }
         });

      JButton printPreviewButton = new JButton("Print preview");
      buttonPanel.add(printPreviewButton);
      printPreviewButton.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               PrintPreviewDialog dialog = new PrintPreviewDialog(makeBook());
               dialog.setVisible(true);            
            }
         });

      add(buttonPanel, BorderLayout.SOUTH);
      pack();
   }

   /**
      Makes a book that contains a cover page and the
      pages for the banner.
   */
   public Book makeBook()
   {  
      if (pageFormat == null)
      {  
         PrinterJob job = PrinterJob.getPrinterJob();
         pageFormat = job.defaultPage();
      }
      Book book = new Book();
      String message = text.getText();
      Banner banner = new Banner(message);
      int pageCount = banner.getPageCount((Graphics2D)getGraphics(), pageFormat);
      book.append(new CoverPage(message + " (" + pageCount + " pages)"), pageFormat);
      book.append(banner, pageFormat, pageCount);
      return book;
   }

   private JTextField text;
   private PageFormat pageFormat;
   private PrintRequestAttributeSet attributes;
}

/**
   A banner that prints a text string on multiple pages.
*/
class Banner implements Printable
{ 
   /**
      Constructs a banner
      @param m the message string
   */
   public Banner(String m)
   {  
      message = m;
   }

   /**
      Gets the page count of this section.
      @param g2 the graphics context
      @param pf the page format
      @return the number of pages needed
   */
   public int getPageCount(Graphics2D g2, PageFormat pf)
   {  
      if (message.equals("")) return 0;
      FontRenderContext context = g2.getFontRenderContext();
      Font f = new Font("Serif", Font.PLAIN, 72);
      Rectangle2D bounds = f.getStringBounds(message, context);
      scale = pf.getImageableHeight() / bounds.getHeight();
      double width = scale * bounds.getWidth();
      int pages = (int)Math.ceil(width / pf.getImageableWidth());
      return pages;
   }

   public int print(Graphics g, PageFormat pf, int page)
      throws PrinterException
   {  
      Graphics2D g2 = (Graphics2D)g;
      if (page > getPageCount(g2, pf))
         return Printable.NO_SUCH_PAGE;
      g2.translate(pf.getImageableX(), pf.getImageableY());

      drawPage(g2, pf, page);
      return Printable.PAGE_EXISTS;
   }

   public void drawPage(Graphics2D g2, PageFormat pf, int page)
   {  
      if (message.equals("")) return;
      page--; // account for cover page

      drawCropMarks(g2, pf);
      g2.clip(new Rectangle2D.Double(0, 0, pf.getImageableWidth(), pf.getImageableHeight()));
      g2.translate(-page * pf.getImageableWidth(), 0);
      g2.scale(scale, scale);
      FontRenderContext context = g2.getFontRenderContext();
      Font f = new Font("Serif", Font.PLAIN, 72);
      TextLayout layout = new TextLayout(message, f, context);
      AffineTransform transform = AffineTransform.getTranslateInstance(0, layout.getAscent());
      Shape outline = layout.getOutline(transform);
      g2.draw(outline);
   }

   /**
      Draws 1/2" crop marks in the corners of the page.
      @param g2 the graphics context
      @param pf the page format
   */
   public void drawCropMarks(Graphics2D g2, PageFormat pf)
   {  
      final double C = 36; // crop mark length = 1/2 inch
      double w = pf.getImageableWidth();
      double h = pf.getImageableHeight();
      g2.draw(new Line2D.Double(0, 0, 0, C));
      g2.draw(new Line2D.Double(0, 0, C, 0));
      g2.draw(new Line2D.Double(w, 0, w, C));
      g2.draw(new Line2D.Double(w, 0, w - C, 0));
      g2.draw(new Line2D.Double(0, h, 0, h - C));
      g2.draw(new Line2D.Double(0, h, C, h));
      g2.draw(new Line2D.Double(w, h, w, h - C));
      g2.draw(new Line2D.Double(w, h, w - C, h));
   }

   private String message;
   private double scale;
}

/**
   This class prints a cover page with a title.
*/
class CoverPage implements Printable
{  
   /**
      Constructs a cover page.
      @param t the title
   */
   public CoverPage(String t)
   {  
      title = t;
   }

   public int print(Graphics g, PageFormat pf, int page)
      throws PrinterException
   {  
      if (page >= 1) return Printable.NO_SUCH_PAGE;
      Graphics2D g2 = (Graphics2D)g;
      g2.setPaint(Color.black);
      g2.translate(pf.getImageableX(), pf.getImageableY());
      FontRenderContext context = g2.getFontRenderContext();
      Font f = g2.getFont();
      TextLayout layout = new TextLayout(title, f, context);
      float ascent = layout.getAscent();
      g2.drawString(title, 0, ascent);
      return Printable.PAGE_EXISTS;
   }

   private String title;
}

/**
   This class implements a generic print preview dialog.
*/
class PrintPreviewDialog extends JDialog
{ 
   /**
      Constructs a print preview dialog.
      @param p a Printable
      @param pf the page format
      @param pages the number of pages in p
   */
   public PrintPreviewDialog(Printable p, PageFormat pf, int pages)
   {  
      Book book = new Book();
      book.append(p, pf, pages);
      layoutUI(book);
   }

   /**
      Constructs a print preview dialog.
      @param b a Book
   */
   public PrintPreviewDialog(Book b)
   {  
      layoutUI(b);
   }

   /**
      Lays out the UI of the dialog.
      @param book the book to be previewed
   */
   public void layoutUI(Book book)
   {  
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

      canvas = new PrintPreviewCanvas(book);
      add(canvas, BorderLayout.CENTER);

      JPanel buttonPanel = new JPanel();

      JButton nextButton = new JButton("Next");
      buttonPanel.add(nextButton);
      nextButton.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               canvas.flipPage(1);
            }
         });

      JButton previousButton = new JButton("Previous");
      buttonPanel.add(previousButton);
      previousButton.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               canvas.flipPage(-1);
            }
         });

      JButton closeButton = new JButton("Close");
      buttonPanel.add(closeButton);
      closeButton.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               setVisible(false);
            }
         });

      add(buttonPanel, BorderLayout.SOUTH);
   }

   private PrintPreviewCanvas canvas;

   private static final int DEFAULT_WIDTH = 300;
   private static final int DEFAULT_HEIGHT = 300;
}

/**
   The canvas for displaying the print preview.
*/
class PrintPreviewCanvas extends JPanel
{ 
   /**
      Constructs a print preview canvas.
      @param b the book to be previewed
   */
   public PrintPreviewCanvas(Book b)
   {  
      book = b;
      currentPage = 0;
   }

   public void paintComponent(Graphics g)
   {  
      super.paintComponent(g);
      Graphics2D g2 = (Graphics2D)g;
      PageFormat pageFormat = book.getPageFormat(currentPage);

      double xoff; // x offset of page start in window
      double yoff; // y offset of page start in window
      double scale; // scale factor to fit page in window
      double px = pageFormat.getWidth();
      double py = pageFormat.getHeight();
      double sx = getWidth() - 1;
      double sy = getHeight() - 1;
      if (px / py < sx / sy) // center horizontally
      {  
         scale = sy / py;
         xoff = 0.5 * (sx - scale * px);
         yoff = 0;
      }
      else // center vertically
      {  
         scale = sx / px;
         xoff = 0;
         yoff = 0.5 * (sy - scale * py);
      }
      g2.translate((float)xoff, (float)yoff);
      g2.scale((float)scale, (float)scale);

      // draw page outline (ignoring margins)
      Rectangle2D page = new Rectangle2D.Double(0, 0, px, py);
      g2.setPaint(Color.white);
      g2.fill(page);
      g2.setPaint(Color.black);
      g2.draw(page);

      Printable printable = book.getPrintable(currentPage);
      try
      {  
         printable.print(g2, pageFormat, currentPage);
      }
      catch (PrinterException e)
      {  
         g2.draw(new Line2D.Double(0, 0, px, py));
         g2.draw(new Line2D.Double(px, 0, 0, py));
      }
   }

   /**
      Flip the book by the given number of pages.
      @param by the number of pages to flip by. Negative
      values flip backwards.
   */
   public void flipPage(int by)
   {  
      int newPage = currentPage + by;
      if (0 <= newPage && newPage < book.getNumberOfPages())
      {  
         currentPage = newPage;
         repaint();
      }
   }

   private Book book;
   private int currentPage;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re亚洲国产精品| 国产欧美久久久精品影院| 91极品视觉盛宴| aaa亚洲精品一二三区| 国产成人在线看| 国产乱子伦一区二区三区国色天香| 丝袜美腿亚洲综合| 肉色丝袜一区二区| 免费av成人在线| 日本不卡一二三区黄网| 日精品一区二区| 免费在线一区观看| 激情欧美一区二区| 国产乱码精品一区二区三| 国产剧情av麻豆香蕉精品| 国产成人在线免费观看| 99久久国产免费看| 色综合色狠狠天天综合色| 一本色道久久加勒比精品| 欧亚洲嫩模精品一区三区| 欧美色涩在线第一页| 678五月天丁香亚洲综合网| 日韩免费电影一区| 欧美精品一区男女天堂| 中文av一区特黄| 一区二区三区日韩精品视频| 亚洲高清免费视频| 免费欧美在线视频| 国产白丝精品91爽爽久久| 色综合久久久久网| 欧美日韩在线电影| 日韩一卡二卡三卡国产欧美| 国产日韩精品一区二区三区在线| 国产日韩精品一区二区三区| 亚洲免费av在线| 欧美aaaaa成人免费观看视频| 全部av―极品视觉盛宴亚洲| 国产一区二区三区不卡在线观看| 成人av电影免费观看| 欧洲一区二区三区在线| 日韩精品一区在线| 中文字幕不卡的av| 午夜久久久久久电影| 国模无码大尺度一区二区三区| 成人黄动漫网站免费app| 欧美撒尿777hd撒尿| 日韩免费电影网站| 亚洲欧洲www| 免费一级片91| 97精品视频在线观看自产线路二| 欧美日韩1234| 国产精品免费免费| 免费的国产精品| 91丨九色丨蝌蚪丨老版| 日韩一区二区电影网| 亚洲人成电影网站色mp4| 美国毛片一区二区| 日本韩国精品在线| 国产偷国产偷精品高清尤物| 亚洲超丰满肉感bbw| 国产suv一区二区三区88区| 欧美三级乱人伦电影| 亚洲国产精品成人综合色在线婷婷 | 亚洲香肠在线观看| 国产综合一区二区| 欧美丝袜丝交足nylons| 国产偷国产偷亚洲高清人白洁| 性欧美大战久久久久久久久| 国产一区二区三区四区五区美女| 欧美最新大片在线看| 中文字幕精品在线不卡| 老司机精品视频在线| 日本二三区不卡| 国产日韩影视精品| 奇米综合一区二区三区精品视频| 色综合色综合色综合色综合色综合| 亚洲精品一区二区三区精华液 | 精品日韩在线观看| 一本久久a久久免费精品不卡| 九九视频精品免费| 国产成人在线看| 日韩精品专区在线影院观看 | 色菇凉天天综合网| 久久久久久免费网| 日本成人超碰在线观看| 在线看日本不卡| 日韩理论电影院| 成人黄色电影在线| 国产日产精品1区| 九九国产精品视频| 欧美一区二区三区免费| 香蕉影视欧美成人| 在线观看视频一区二区欧美日韩| 国产精品素人一区二区| 国产精品综合在线视频| 精品欧美一区二区久久| 日本一道高清亚洲日美韩| 在线日韩一区二区| 亚洲色图欧美激情| 97精品久久久午夜一区二区三区 | 日韩精品一区二区在线| 欧美大片一区二区三区| 欧美一区在线视频| 欧美一区二区三区性视频| 在线免费观看视频一区| 成人av电影免费在线播放| 91丨porny丨最新| 国产一区二区三区不卡在线观看| 亚洲国产wwwccc36天堂| 欧美在线免费播放| 色综合久久中文综合久久97 | 成人一区二区三区视频在线观看| 亚洲成人1区2区| 亚洲视频一区在线| 欧美成人免费网站| 精品久久久久久久久久久院品网 | 亚洲欧美一区二区三区久本道91| 色狠狠色狠狠综合| 国产成人精品亚洲777人妖| 成人免费视频一区| 久久久青草青青国产亚洲免观| 欧美日韩黄色一区二区| 亚洲成人av中文| 欧美日韩不卡视频| 青椒成人免费视频| 欧美r级在线观看| 国产成人在线色| 国产精品久久久久影院亚瑟| 色综合中文字幕国产 | 色综合色综合色综合| 一区二区欧美在线观看| 欧美日韩精品欧美日韩精品 | 精品在线你懂的| 国产日韩av一区| av高清久久久| 亚洲成a人片在线观看中文| 日韩一级免费观看| 国产成人啪免费观看软件| 综合婷婷亚洲小说| 欧美精品xxxxbbbb| 国产一二三精品| 亚洲精品乱码久久久久久黑人| 欧美日韩精品一二三区| 国产一区二区三区av电影 | 99视频超级精品| 亚洲午夜一区二区| 精品国产乱码久久| 波多野结衣一区二区三区| 亚洲成人资源网| 国产亚洲制服色| 欧美日韩一区小说| 国产一区二区三区黄视频| 亚洲另类春色校园小说| 日韩免费视频线观看| 99国产精品久| 免费观看在线色综合| 亚洲欧洲精品一区二区三区 | 色婷婷国产精品久久包臀| 全国精品久久少妇| 亚洲三级电影网站| 精品国产一区二区在线观看| 99在线视频精品| 青青草国产精品亚洲专区无| 国产精品美女久久久久久2018| 欧美日韩一区二区三区免费看| 国产乱人伦偷精品视频免下载| 亚洲精品美国一| 久久久精品免费网站| 欧美日韩国产小视频在线观看| 国产大陆亚洲精品国产| 天天av天天翘天天综合网| 亚洲国产高清在线观看视频| 7777精品伊人久久久大香线蕉超级流畅| 国产成人自拍高清视频在线免费播放| 亚洲丰满少妇videoshd| 国产精品系列在线| 日韩欧美中文字幕制服| 色综合久久天天| 国产成人综合自拍| 蜜桃精品视频在线| 亚洲一区二区三区四区五区黄| 日本一区二区三区电影| 日韩精品一区在线观看| 欧美午夜寂寞影院| 91小视频免费看| 国产精品538一区二区在线| 日韩av高清在线观看| 亚洲综合另类小说| 日韩一区欧美小说| 国产亚洲美州欧州综合国| 日韩欧美国产系列| 欧美精品在线视频| 日本国产一区二区| 91视频一区二区三区| 精品国产91洋老外米糕| 欧美高清性hdvideosex| 欧美性猛交一区二区三区精品| av一二三不卡影片| 风间由美一区二区三区在线观看 | 日韩高清欧美激情|