效果如上图:
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;
}
}
注意:
如果嵌入网页中点击按钮没反应,则需要做数字签名。其实,数字签名很简单的了。。。其中有几篇转载的文章就是说这个的。。。。就几个步骤照做就行。。。