`
chowqingbao
  • 浏览: 12666 次
  • 性别: 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串口打印源代码",这是一段能够帮助开发者利用JAVA语言与串口连接的标签打印机进行交互的代码。 首先,我们需要了解什么是串口通信。串口,也称为串行端口,是一种简单但功能强大的通信...

    java8源代码内容

    综上所述,Java 8源代码对于学习和理解这些新特性的实现机制非常有价值。通过阅读源代码,开发者可以深入了解内部的工作原理,提升编程技能,并能够更好地利用Java 8的功能来解决实际问题。与Eclipse等IDE配合使用,...

    java api源代码

    Java API源代码是Java开发中的核心组成部分,它包含了Java标准库中的所有类和接口,这些类和接口构成了Java平台的基础。Sun Microsystems(后被Oracle收购)是Java的原始开发者,他们发布的源代码对于深入理解Java的...

    纯Java实现整个网页截图项目源代码

    在本项目中,"纯Java实现整个网页截图项目源代码" 是一个利用Java编程语言来实现的实用程序,它能够捕获整个网页的图像并将其保存为图片文件。这个项目的核心在于利用DJNativeSwing组件,这是一个开源的Java库,它...

    Java固定资产管理系统源代码.pdf

    1. Java GUI 编程:在这个源代码中,我们可以看到 Java 的 GUI 编程是如何实现的。使用 Java 的 Swing 库,开发者可以轻松地创建图形用户界面,包括按钮、标签、文本框、密码框等组件。 2. JDBC 连接数据库:在这个...

    模板打印源代码,模板打印源代码

    模板打印源代码是指用于控制和设计打印输出的编程代码,它允许开发者根据预定义的模板格式来生成具有统一风格的打印内容。这样的源代码通常结合了各种编程语言(如Python、Java、C#)和模板引擎,例如Jinja2、...

    JAVA经典计算机源代码

    "JAVA经典计算机源代码"这个主题涵盖了使用Java语言编写的计算机程序的原始代码,这些代码通常代表了良好的编程实践和设计模式,对于学习和理解Java编程有极大的帮助。 在Java编程中,一个基础的例子是“Java计算器...

    java俄罗斯方块源代码

    - **日志记录**:为了调试,源代码可能包含了打印日志的代码。 - **单元测试**:对游戏的各个部分进行独立测试,确保其正确运行。 通过研究和理解这个“Java俄罗斯方块源代码”,新手不仅能学习到Java编程的基本...

    条码打印源代码

    在这个"条码打印源代码"中,我们可以学习到如何利用编程语言(可能是C#、Java、Python或其他语言)生成这些条形码图形,并将其发送到打印机进行打印。首先,我们需要了解条形码的生成算法,这通常涉及到计算每个条码...

    java基础教程源代码

    Java基础教程源代码是学习Java编程语言的重要参考资料,它涵盖了Java的基本操作,旨在帮助初学者理解和掌握编程概念。在这个教程中,你可以通过实际的代码示例来了解和实践各种Java编程技术。以下是一些关键的知识点...

    java小游戏源代码

    综上所述,这份Java小游戏源代码不仅包含了Java编程的基础语法和控制流语句,还涉及了数组操作、数据类型转换、随机数生成以及游戏算法设计等高级概念,为初学者提供了一个全面的学习案例。通过分析和理解这些代码,...

    模板打印源代码

    模板打印源代码是实现这一功能的一种方法,尤其在需要定制化输出格式时。在这个特定的场景中,我们有两个主要的组成部分:模板制作和数据打印。 模板制作是设计打印输出外观的过程。这通常涉及到创建一个布局,包括...

    Java源代码打印九九乘法表.rar

    首先,Java源代码通常以`.java`为扩展名,但在提供的文件列表中,我们看到的是一个名为"打印九九乘法表"的文件,这可能是一个已经编译好的`.class`文件或者是某种文本格式的源代码展示。通常,一个Java程序会包含一...

    java聊天程序源代码

    Java聊天程序源代码是学习Java编程和网络通信技术的一个实用示例。这个程序通常涉及到多线程、套接字编程、输入输出流处理等核心Java技术。以下将详细阐述这些关键知识点。 首先,Java聊天程序的核心是网络通信,这...

    java简单实例程序源代码

    这个"java简单实例程序源代码"的压缩包很可能是为初学者准备的一些基础编程示例,帮助他们更好地理解和学习Java编程。 在Java编程中,源代码是用Java语言编写的文本文件,通常扩展名为.java。这些源代码文件包含了...

    Java初期万年历源代码

    Java初期万年历源代码是Java编程初学者经常会遇到的一个挑战性项目,它涉及到日期处理、循环控制以及面向对象编程等多个关键知识点。这个程序的主要目标是设计一个能够显示从公元1到公元9999年所有年份的日历,因此...

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

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

    java io流源代码

    在提供的链接中,你可能会找到关于这些概念的源代码实现,这将有助于深入理解Java IO流的工作原理和用法。通过学习和分析这些源代码,你可以更好地掌握Java的输入输出机制,并能更有效地处理各种IO操作。

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

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

Global site tag (gtag.js) - Google Analytics