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

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

?? booktest.java

?? CoreJAVA 7th Edithon Source Code zip
?? JAVA
字號:
/**
   @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;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av中文一区二区三区| 欧美日韩高清在线| 奇米四色…亚洲| 国产精品乱人伦| 日韩欧美高清一区| 欧美日韩国产乱码电影| 成人18精品视频| 国产一区二区精品久久99| 天堂av在线一区| 亚洲人成精品久久久久久| 欧美精品一区二区久久婷婷| 91久久精品一区二区三区| 国产成a人亚洲| 久久se精品一区二区| 亚洲国产日韩a在线播放性色| 国产精品欧美一区喷水| 精品福利一区二区三区| 欧美二区三区的天堂| 欧美丝袜第三区| 97久久精品人人澡人人爽| 国模套图日韩精品一区二区| 日本不卡一区二区| 亚洲高清免费观看| 亚洲综合激情另类小说区| 综合激情网...| 1024精品合集| 亚洲天堂久久久久久久| 国产精品日韩精品欧美在线 | 日韩亚洲欧美综合| 欧美日韩国产成人在线免费| 欧美性猛交一区二区三区精品| 不卡一卡二卡三乱码免费网站| 国产成人免费视频网站 | 久久精品男人天堂av| 精品日韩99亚洲| 欧美一级日韩免费不卡| 欧美精品在线视频| 欧美无砖专区一中文字| 欧美午夜电影网| 欧美少妇一区二区| 欧美精品日韩精品| 欧美一级日韩一级| 亚洲精品一区二区三区香蕉| 久久久综合网站| 国产日韩av一区| 综合亚洲深深色噜噜狠狠网站| 《视频一区视频二区| 亚洲激情av在线| 亚洲一二三区不卡| 人人超碰91尤物精品国产| 美女视频黄久久| 激情图片小说一区| 高清在线成人网| 97久久精品人人爽人人爽蜜臀| 色婷婷综合久久久中文字幕| 欧美三级中文字| 欧美一区二区三区免费| 久久亚洲春色中文字幕久久久| 中文字幕免费不卡| 一区二区不卡在线视频 午夜欧美不卡在 | 久久99热国产| 成人午夜又粗又硬又大| 在线亚洲一区观看| 日韩一区二区三区免费看 | 成人动漫一区二区三区| 色婷婷久久久亚洲一区二区三区| 欧美三片在线视频观看 | 天使萌一区二区三区免费观看| 蜜臀av一区二区在线观看| 国产成人一级电影| 色综合天天做天天爱| 国产日本欧洲亚洲| 亚洲精品国产a| 日本在线不卡视频| 粉嫩av一区二区三区在线播放 | 国产夫妻精品视频| 色一情一乱一乱一91av| 日韩亚洲欧美高清| 国产精品久久久久久亚洲伦| 亚洲福中文字幕伊人影院| 久久99精品久久久久| av亚洲精华国产精华| 51午夜精品国产| 国产精品久久久久影视| 青青国产91久久久久久| 91天堂素人约啪| 日韩女优毛片在线| 亚洲精品一二三四区| 国产自产视频一区二区三区| 欧美中文一区二区三区| 国产视频一区在线观看| 五月婷婷久久丁香| 成年人国产精品| 精品999在线播放| 一区二区三区鲁丝不卡| 国产剧情一区二区| 欧美视频在线一区| 国产欧美一二三区| 日韩电影在线一区二区三区| 97久久精品人人做人人爽| 精品欧美一区二区三区精品久久| 亚洲在线中文字幕| 成人妖精视频yjsp地址| 欧美mv日韩mv国产| 午夜伦理一区二区| 99久久精品免费看国产| 国产午夜亚洲精品不卡| 麻豆精品视频在线| 欧美人伦禁忌dvd放荡欲情| 亚洲男人天堂av| 国产·精品毛片| 精品久久一二三区| 日韩精品亚洲专区| 欧美日韩视频不卡| 亚洲综合丁香婷婷六月香| 日韩美女一区二区三区四区| 亚洲一区二区视频在线观看| 成人免费福利片| 中文字幕免费不卡| 国产成人精品亚洲日本在线桃色| 日韩三级视频中文字幕| 日韩精品一级二级| 欧美日韩国产三级| 亚洲国产精品久久人人爱| 99久久精品国产导航| 中文字幕一区二区三区乱码在线| 国产成人鲁色资源国产91色综| 精品日韩欧美在线| 国产综合色视频| 久久久蜜桃精品| 国产精品一区二区无线| 精品国产1区二区| 国产一区二区三区精品视频| 欧美第一区第二区| 狠狠色综合色综合网络| 久久综合九色综合欧美98| 国产在线视视频有精品| 国产欧美一区二区精品性色超碰| 久久99热这里只有精品| 久久久久久久久久看片| 国产成人精品免费视频网站| 国产欧美日韩亚州综合 | 亚洲一二三四在线| 欧美日精品一区视频| 视频一区欧美日韩| 91精品国产一区二区三区| 久久精品国产精品亚洲综合| 精品不卡在线视频| 国产白丝精品91爽爽久久| 国产精品久久久久久久第一福利| k8久久久一区二区三区| 夜夜操天天操亚洲| 在线综合亚洲欧美在线视频| 老司机免费视频一区二区| ww久久中文字幕| av在线一区二区| 香港成人在线视频| 日韩欧美成人一区二区| 国产成人av电影在线播放| 麻豆精品在线观看| 欧美高清在线一区二区| 色婷婷激情综合| 日韩专区一卡二卡| 国产性色一区二区| 在线欧美一区二区| 精品一区二区av| 亚洲免费视频成人| 欧美一区二区在线免费观看| 国产精品77777| 亚洲精品老司机| 欧美一区二区三区视频| 国产99久久久久| 亚洲国产精品一区二区久久恐怖片 | 欧美日韩国产首页在线观看| 精品一区二区三区在线观看国产 | 国产成人av一区| 亚洲在线视频免费观看| 日韩三级av在线播放| 成人精品视频网站| 香蕉加勒比综合久久| 日本一区二区三区四区在线视频| 日本韩国视频一区二区| 精品一区二区三区久久| 亚洲精品成a人| xf在线a精品一区二区视频网站| 色婷婷国产精品久久包臀 | 欧美乱妇23p| 不卡在线视频中文字幕| 免费观看一级特黄欧美大片| 亚洲欧洲精品一区二区精品久久久 | 国产精品视频一二| 91精品国产91久久综合桃花| 成人黄色网址在线观看| 美女www一区二区| 樱花草国产18久久久久| 国产日韩精品一区二区三区| 91精品国产入口在线| 91麻豆高清视频| 国产91综合网| 美国十次了思思久久精品导航|