• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
紫色幽灵
软件开发备忘录
博客园    首页    新随笔    联系   管理    订阅  订阅

Java实现打印

Java实现打印 
 
一个非常完整的程序。请在代码下载中找。以下一共有三个代码哦。

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

/** *//** 
*/


public class PrintUtilities implements Printable {
 
private Component componentToBePrinted;

 
public static void printComponent(Component c) {
   
new PrintUtilities(c).print();
 }

 
 
public PrintUtilities(Component componentToBePrinted) {
   
this.componentToBePrinted = componentToBePrinted;
 }

 
 
public void print() {
   PrinterJob printJob 
= PrinterJob.getPrinterJob();
   printJob.setPrintable(
this);
   
if (printJob.printDialog())
     
try {
       printJob.print();
     }
 catch(PrinterException pe) {
       System.out.println(
"Error printing: " + pe);
     }

 }


 
public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
   
if (pageIndex > 0) {
     
return(NO_SUCH_PAGE);
   }
 else {
     Graphics2D g2d 
= (Graphics2D)g;
     g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
     disableDoubleBuffering(componentToBePrinted);
     componentToBePrinted.paint(g2d);
     enableDoubleBuffering(componentToBePrinted);
     
return(PAGE_EXISTS);
   }

 }


 
public static void disableDoubleBuffering(Component c) {
   RepaintManager currentManager 
= RepaintManager.currentManager(c);
   currentManager.setDoubleBufferingEnabled(
false);
 }

 
 
public static void enableDoubleBuffering(Component c) {
   RepaintManager currentManager 
= RepaintManager.currentManager(c);
   currentManager.setDoubleBufferingEnabled(
true);
 }

}



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

public class PrintExample extends JFrame
                         
implements ActionListener {
 
public static void main(String[] args) {
   
new PrintExample();
 }


 
public PrintExample() {
   
super("Printing Swing Components");
   WindowUtilities.setNativeLookAndFeel();
   addWindowListener(
new ExitListener());
   Container content 
= getContentPane();
   JButton printButton 
= new JButton("Print");
   printButton.addActionListener(
this);
   JPanel buttonPanel 
= new JPanel();
   buttonPanel.setBackground(Color.white);
   buttonPanel.add(printButton);
   content.add(buttonPanel, BorderLayout.SOUTH);
   DrawingPanel drawingPanel 
= new DrawingPanel();
   content.add(drawingPanel, BorderLayout.CENTER);
   pack();
   setVisible(
true);
 }


 
public void actionPerformed(ActionEvent event) {
   PrintUtilities.printComponent(
this);
 }

}



import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;

public class DrawingPanel extends JPanel {
 
private int fontSize = 90;
 
private String message = "Java 2D";
 
private int messageWidth;
 
 
public DrawingPanel() {
   setBackground(Color.white);
   Font font 
= new Font("Serif", Font.PLAIN, fontSize);
   setFont(font);
   FontMetrics metrics 
= getFontMetrics(font);
   messageWidth 
= metrics.stringWidth(message);
   
int width = messageWidth*5/3;
   
int height = fontSize*3;
   setPreferredSize(
new Dimension(width, height));
 }


 
public void paintComponent(Graphics g) {
   
super.paintComponent(g);
   Graphics2D g2d 
= (Graphics2D)g;
   
int x = messageWidth/10;
   
int y = fontSize*5/2;
   g2d.translate(x, y);
   g2d.setPaint(Color.lightGray);
   AffineTransform origTransform 
= g2d.getTransform();
   g2d.shear(
-0.95, 0);
   g2d.scale(
1, 3);
   g2d.drawString(message, 
0, 0);
   g2d.setTransform(origTransform);
   g2d.setPaint(Color.black);
   g2d.drawString(message, 
0, 0);
 }

}
 

posted @ 2007-07-09 16:12  紫色幽灵  阅读(1941)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3