`
chowqingbao
  • 浏览: 12012 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

JAVA实现打印源代码

阅读更多

package com.project.print;

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class PrintTest extends JFrame implements ActionListener {

private int id ;
public static void main(String[] e){
new PrintTest(1);
}
public PrintTest(int id) {
super("PrintTest");
this.id = id;
setSize(543, 468);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container contentPane = getContentPane();
canvas = new PrintPanel();
contentPane.add(canvas, "Center");
JPanel buttonPanel = new JPanel();
printButton = new JButton("打印");
buttonPanel.add(printButton);
printButton.addActionListener(this);
pageSetupButton = new JButton("页面设置");
buttonPanel.add(pageSetupButton);
pageSetupButton.addActionListener(this);
contentPane.add(buttonPanel, "North");
this.setVisible(true);
}

public void actionPerformed(ActionEvent event) {
Object source = event.getSource();
if (source == printButton) {
PrinterJob printJob = PrinterJob.getPrinterJob();
if (pageFormat == null)
pageFormat = printJob.defaultPage();
printJob.setPrintable(canvas, pageFormat);
if (printJob.printDialog()) {
try {
printJob.print();
} catch (PrinterException exception) {
JOptionPane.showMessageDialog(this, exception);
}
}
} else if (source == pageSetupButton) {
PrinterJob printJob = PrinterJob.getPrinterJob();
if (pageFormat == null)
pageFormat = printJob.defaultPage();
pageFormat = printJob.pageDialog(pageFormat);
}
}

private JButton printButton;
private JButton pageSetupButton;
private PrintPanel canvas;
private PageFormat pageFormat;

class PrintPanel extends JPanel implements Printable {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
drawPage(g2);
}

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);
//Rectangle2D page1 = new Rectangle2D.Double(0, 0, pf.getImageableX(), pf.getImageableY()); //绘制页面矩形

//g2.fill(page1);
g2.translate(pf.getImageableX(), pf.getImageableY());
g2.draw(new Rectangle2D.Double(0, 0, pf.getImageableWidth(), pf
.getImageableHeight()));
//g2.setPaint(Color.black);
drawPage(g2);
return Printable.PAGE_EXISTS;
}

public void drawPage(Graphics2D g2) {
g2.drawString("00000000", 10, 100);
/*FontRenderContext context = g2.getFontRenderContext();
Font f = new Font("宋体", Font.PLAIN, 12);
GeneralPath clipShape = new GeneralPath();
TextLayout layout = new TextLayout("2007", f, context);
AffineTransform transform = AffineTransform.getTranslateInstance(0,
0);
layout = new TextLayout("10", f, context);
transform = AffineTransform.getTranslateInstance(180, 92);
layout = new TextLayout("31", f, context);
transform = AffineTransform.getTranslateInstance(220, 92);
Shape outline = layout.getOutline(transform);
clipShape.append(outline, false);
layout = new TextLayout("货物", f, context);
transform = AffineTransform.getTranslateInstance(138, 144);
outline = layout.getOutline(transform);
clipShape.append(outline, false);
g2.draw(clipShape);
g2.clip(clipShape);
final int NLINES = 50;
Point2D p = new Point2D.Double(0, 0);
for (int i = 0; i < NLINES; i++) {
double x = (2 * getWidth() * i) / NLINES;
double y = (2 * getHeight() * (NLINES - 1 - i)) / NLINES;
Point2D q = new Point2D.Double(x, y);
g2.draw(new Line2D.Double(p, q));
}*/
}
}
}

分享到:
评论

相关推荐

    标签打印机JAVA串口打印源代码

    标签打印机JAVA串口打印源代码,里面有接口使用说明,可以跑的DEMO,通过JAVA控制串口,实现不干胶打印,

    JAVA精确票据打印

    Java实现打印机精确打印示例。给那些需要java打印的朋友们。

    javaweb学生信息选课管理系统源代码.zip

    javaweb学生信息选课管理系统源代码。javaweb学生信息选课管理系统--老师学生双用户; 额外实现了成绩单页面转pdf与打印下载接口; oracle/mysql jsp servlet 有助于初学者学习深入 javaweb学生信息选课管理系统源...

    基于Java的数码照片管理软件源代码

    基于Java的数码照片管理软件源代码,简单好用

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java实现的计算代码的行数

    用java实现的计算一个代码行数的软件,还没有完善,期待下个版本

    java毕业设计基于Android的个人记账软件的设计与实现源代码.zip

    java毕业设计基于Android的个人记账软件的设计与实现源代码。附带apk安装包,在app/release/目录下,可以下载到安卓手机上使用。功能包括: 注册、登录、密码可见或不可见、记住密码、修改密码。 记账:收入或支出...

    Java+Eclipse+Swing+MySql 教材管理系统源代码

    完成教材管理系统的设计与实现,主要包括以下根本内容: 1)教材信息的录入; 2)教材信息的查询; 3)教材的入库和出库; 4]教材库存查询; 5)各项统计工作及打印; 6]完成程序的最终调试,必须能正常运行。 教材入库...

    Java笔记编辑查看器源代码

    不知道JAVA内部如何实现的这两个操作,这里得到的路径格式与windows系统要求的不一样,需要处理,判断当前的状态是不是有文件处于编辑状态。如果没有则显示选中的文件内容,因为右键不能选中文件,所以右击时自动左...

    java源码包---java 源码 大量 实例

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    数据结构课程设计 哈弗曼编码译码器源代码 java版

    数据结构课程设计 哈弗曼编码译码器源代码 java版 带有注释 简单易懂

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    * \p{Print} A printable character: [\p{Graph}] \p{Print} 可打印字符: [\p{Graph}] * \p{Blank} A space or a tab: [ \t] \p{Blank} 空格或制表符: [ \t] * \p{Cntrl} A control ...

    JAVA实战项目源码-计算机毕业设计java专业-java-源代码-简易java框架开源订销管理系统-信息化办公

    JAVA实战项目源码-计算机毕业设计java专业-java-源代码-简易java框架开源订销管理系统-信息化办公  简易java框架开源订销管理系统简介 该系统是一个使用Java语言开发,以国内开源Web MVC框架EasyJWeb作系统引擎...

    java范例开发大全源代码

     实例33 打印任意一年日历 48  实例34 一年四季的划分 51  第2篇 Java数据处理  第4章 异常处理(教学视频:62分钟) 54  4.1 编译时异常 54  实例35 除0发生的算术异常(ArithmeticException) 54 ...

    水晶报表例子程序源代码

    自己完成的一个水晶报表例子程序的源代码,主要实现了在程序中查询数据,并将数据传给水晶报表显示的功能,并且通过参数的方式可以将程序中的信息传递到水晶报表中进行显示。

    用Java实现的C语言的编译器课程设计

    这是使用java实现的c语言编译器,其中包括Java源代码和c语言的测试程序,包括我们的输出结果的截图和课程设计说明书,如果你的课程设计也是这个的话,用这个肯定够用了,包括词法分析,语法分析,语义分析,分别打印...

    java源码包2

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    JAVA上百实例源码以及开源项目源代码 java开源包2

    EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean...

Global site tag (gtag.js) - Google Analytics