Applet打印



 效果如上图:

 

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.awt.print.PrinterJob;
import java.awt.print.*;

public class drawfarcode extends Applet implements Printable, ActionListener
{
	
	private static final long serialVersionUID = 1L;
	private String farcodevalue;

	public drawfarcode()
	{
	}

	public void init()
	{
		Frame f1 = new Frame();
		f1.setLayout(new BorderLayout());
		f1.setBackground(Color.white);
		f1.setSize(700, 200);
		Button prnbutton = new Button("打印");
		this.add("South", prnbutton);
		prnbutton.addActionListener(this);
		farcodevalue = "123";
	}

	public void actionPerformed(ActionEvent e)
	{
		PrinterJob printJob = PrinterJob.getPrinterJob();
		printJob.setPrintable(this);
		if (printJob.printDialog())
		{
			try
			{
				printJob.print();
			}
			catch (PrinterException ex)
			{
				ex.printStackTrace();
			}

		}
	}

	public void paint(Graphics g)
	{
		int startX = 100;
		int startY = 50;
		int height = 50;
		int width = 1; //最小线条宽度   
		String curFar;
		int curX = startX;
		g.setColor(Color.black);
		for (int i = 0; i < farcodevalue.length(); i++)
		{
			curFar = farcodevalue.substring(i, i + 1);
			if (curFar.equals("0"))
			{
				g.fillRect(curX, startY, width, height);
				g.fillRect(curX + 2 * width, startY, width, height);
				g.fillRect(curX + 5 * width, startY, 2 * width, height);
				g.fillRect(curX + 8 * width, startY, 2 * width, height);
				g.fillRect(curX + 11 * width, startY, width, height);
				curX = curX + 13 * width;
			}
			else if (curFar.equals("1"))
			{
				g.fillRect(curX, startY, 2 * width, height);
				g.fillRect(curX + 3 * width, startY, width, height);
				g.fillRect(curX + 6 * width, startY, width, height);
				g.fillRect(curX + 8 * width, startY, width, height);
				g.fillRect(curX + 10 * width, startY, 2 * width, height);
				curX = curX + 13 * width;
			}
			else if (curFar.equals("2"))
			{
				g.fillRect(curX, startY, width, height);
				g.fillRect(curX + 2 * width, startY, 2 * width, height);
				g.fillRect(curX + 6 * width, startY, width, height);
				g.fillRect(curX + 8 * width, startY, width, height);
				g.fillRect(curX + 10 * width, startY, 2 * width, height);
				curX = curX + 13 * width;
			}
			else if (curFar.equals("3"))
			{
				g.fillRect(curX, startY, 2 * width, height);
				g.fillRect(curX + 3 * width, startY, 2 * width, height);
				g.fillRect(curX + 7 * width, startY, width, height);
				g.fillRect(curX + 9 * width, startY, width, height);
				g.fillRect(curX + 11 * width, startY, width, height);
				curX = curX + 13 * width;
			}
		}
	}

	public int print(Graphics g, PageFormat pf, int pi) throws PrinterException
	{
		if (pi >= 1)
		{
			return Printable.NO_SUCH_PAGE;
		}
		g.setClip(0, 0, 600, 800);
		paint(g);
		return Printable.PAGE_EXISTS;
	}
}

 注意:

      如果嵌入网页中点击按钮没反应,则需要做数字签名。其实,数字签名很简单的了。。。其中有几篇转载的文章就是说这个的。。。。就几个步骤照做就行。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值