<div style="text-indent: 2em; font-size: larger;">

在 Eclispe 环境中,新建一个Java项目,命名为Print,再添加两个类,分别为 MyFrame.java 和 Example.java,代码如下:

MyFrame.java:

import java.awt.*;
import java.awt.event.*;

public class MyFrame extends Frame implements ActionListener { // 声明一个 PrintJob 对象。 PrintJob p = null; Graphics g = null; TextArea text = new TextArea(10, 10); Button 打印文本框 = new Button("打印文本框"), 打印窗口 = new Button("打印窗口"), 打印按钮 = new Button("打印按钮");

MyFrame() {
	super("在应用程序中打印");
	打印文本框.addActionListener(this);
	打印窗口.addActionListener(this);
	打印按钮.addActionListener(this);
	add(text, "Center");
	Panel panel = new Panel();
	panel.add(打印文本框);
	panel.add(打印窗口);
	panel.add(打印按钮);
	add(panel, "South");
	addWindowListener(new WindowAdapter() {
		public void windowClosing(WindowEvent e) {
			System.exit(0);
		}
	});
}

public void actionPerformed(ActionEvent e) {
	if (e.getSource() == 打印文本框) {
		// 创建一个 PrintJob 对象 p
		p = getToolkit().getPrintJob(this, "ok", null);
		// p 获取一个用于打印用于打印的 Graphics 对象。
		g = p.getGraphics();
		g.translate(120, 120);
		text.printAll(g);
		// 释放对象 g
		g.dispose();
		p.end();
	} else if (e.getSource() == 打印窗口) {
		p = getToolkit().getPrintJob(this, "ok", null);
		
		// p 获取一个用于打印的 Graphics 对象
		g = p.getGraphics();
		g.translate(120, 120);
		// 打印当前窗口及其子组件
		this.printAll(g);
		// 释放对象 g
		g.dispose();
		p.end();
	} else if (e.getSource() == 打印按钮) {
		p = getToolkit().getPrintJob(this, "ok", null);
		g = p.getGraphics();
		g.translate(120, 120);
		打印文本框.printAll(g);
		g.translate(78, 0);
		打印窗口.printAll(g);
		g.translate(66, 0);
		打印按钮.printAll(g);
		g.dispose();
		p.end();
	}
}

}

Example.java:

import java.awt.*;
import java.awt.event.*;

public class Example { public static void main(String args[]) { MyFrame f = new MyFrame(); f.setBounds(70, 70, 70, 89); f.setVisible(true); f.pack(); } }