打印程序可以用打印機(jī)提供商提供的驅(qū)動(dòng)來(lái)實(shí)現(xiàn)。
為法庫(kù)等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及法庫(kù)網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、法庫(kù)網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
如果沒有驅(qū)動(dòng),可以利用串口技術(shù)實(shí)現(xiàn),不過(guò)前提是要拿到串口的接口文檔。
樓上的人一看就是在混分。
其實(shí)這種問題應(yīng)該到更專業(yè)的地方問,比如CSDN或者JAVAEYE。
還是把以前寫的一個(gè)例子給樓主看一下。
很多對(duì)方對(duì)照注釋看一下。
這里只是寫一個(gè)java實(shí)現(xiàn)打印小票最基本的功能:(記?。好恳恍胁荒苡刑L(zhǎng)的數(shù)據(jù),否則要超出邊界)
public class TestPrint implements Printable {
/**
* * @param Graphic指明打印的圖形環(huán)境 * @param
* PageFormat指明打印頁(yè)格式(頁(yè)面大小以點(diǎn)為計(jì)量單位,1點(diǎn)為1英寸的1/72,1英寸為25.4毫米。A4紙大致為595×842點(diǎn)) * @param
* pageIndex指明頁(yè)號(hào)
**/
public int print(Graphics gra, PageFormat pf, int pageIndex)
throws PrinterException {
System.out.println("pageIndex=" + pageIndex);
Component c = null;
// print string
String str = "功能測(cè)試";
// 轉(zhuǎn)換成Graphics2D
Graphics2D g2 = (Graphics2D) gra;
// 設(shè)置打印顏色為黑色
g2.setColor(Color.red);
// 打印起點(diǎn)坐標(biāo)
double x = pf.getImageableX();
double y = pf.getImageableY();
switch (pageIndex) {
case 0:
// 設(shè)置打印字體(字體名稱、樣式和點(diǎn)大?。ㄗ煮w名稱可以是物理或者邏輯名稱)
// Java平臺(tái)所定義的五種字體系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput
Font font = new Font("新宋體", Font.PLAIN, 9);
g2.setFont(font); // 設(shè)置字體
// BasicStroke bs_3=new BasicStroke(0.5f);
float[] dash1 = { 2.0f };
// 設(shè)置打印線的屬性。
// 1.線寬 2、3、不知道,4、空白的寬度,5、虛線的寬度,6、偏移量
g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT,
BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f));
// g2.setStroke(bs_3);//設(shè)置線寬
float heigth = font.getSize2D(); // 字體高度
System.out.println("x=" + x);
// -1- 用Graphics2D直接輸出
// 首字符的基線(右下部)位于用戶空間中的 (x, y) 位置處
// g2.drawLine(10,10,200,300);
Image src = Toolkit
.getDefaultToolkit()
.getImage(
"D:\\Aotori\\javaPic.jpg");
g2.drawImage(src, (int) x, (int) y, c);
int img_Height = src.getHeight(c);
int img_width = src.getWidth(c);
//System.out.println("img_Height="+img_Height+"img_width="+img_width
// ) ;
g2.drawString(str, (float) x, (float) y + 1 * heigth + img_Height); //第一排
g2.drawString("oooooooooooo", (float) 50, (float) 60 + 1 * heigth + img_Height); //第二排
g2.drawString("22222222222ddddddddddddddddddddddddddd222222222222", (float) 80, (float) 90 + 1 * heigth + img_Height); //第三排
g2.drawLine((int) x, (int) (y + 1 * heigth + img_Height + 10),
(int) x + 200, (int) (y + 1 * heigth + img_Height + 10));
g2.drawImage(src, (int) x,
(int) (y + 1 * heigth + img_Height + 11), c);
return PAGE_EXISTS;
default:
return NO_SUCH_PAGE;
}
}
public static void test() {
//ReadData();
// 通俗理解就是書、文檔
Book book = new Book();
// 設(shè)置成豎打
PageFormat pf = new PageFormat();
pf.setOrientation(PageFormat.PORTRAIT); // LANDSCAPE表示豎打;PORTRAIT表示橫打;REVERSE_LANDSCAPE表示打印空白
// 通過(guò)Paper設(shè)置頁(yè)面的空白邊距和可打印區(qū)域。必須與實(shí)際打印紙張大小相符。
Paper p = new Paper();
p.setSize(590, 840); // 紙張大小(590, 840)表示A4紙
p.setImageableArea(10, 10, 260, 343); // A4(595 X
// 842)設(shè)置打印區(qū)域,其實(shí)0,0應(yīng)該是72,72
// ,因?yàn)锳4紙的默認(rèn)X,Y邊距是72
pf.setPaper(p);
// 把 PageFormat 和 Printable 添加到書中,組成一個(gè)頁(yè)面
book.append(new TestPrint(), pf);
// 獲取打印服務(wù)對(duì)象
PrinterJob job = PrinterJob.getPrinterJob();
// 設(shè)置打印類
job.setPageable(book);
try {
// 可以用printDialog顯示打印對(duì)話框,在用戶確認(rèn)后打?。灰部梢灾苯哟蛴?/p>
boolean a=job.printDialog();
if(a)
{
job.print();
}
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
package util;
import java.util.ArrayList;
import java.util.Scanner;
public class PrintTable {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int number = 0;//商品的數(shù)量
double price = 0.0;//商品的單價(jià)
String flag = "";//標(biāo)識(shí)是否繼續(xù)操作
ArrayListInteger numbers = new ArrayListInteger();//所有商品數(shù)量的集合
ArrayListDouble prices = new ArrayListDouble();//所有商品單價(jià)集合
ArrayListDouble totals = new ArrayListDouble();//商品總價(jià)集合
System.out.println("--------歡迎進(jìn)入購(gòu)物系統(tǒng)商城---------\n\n");
do{
System.out.print("請(qǐng)輸入商品的數(shù)量:");
number = input.nextInt();
System.out.print("請(qǐng)輸入商品的單價(jià):");
price = input.nextDouble();
numbers.add(number);
prices.add(price);
totals.add(number*price);
System.out.print("確定要繼續(xù)購(gòu)物嗎?(yes/no):");
flag= input.next();
System.out.println("\n");
}while ("yes".equalsIgnoreCase(flag));
System.out.print("\n需要打印購(gòu)物單嗎?(yes/no):");
flag= input.next();
while ("yes".equalsIgnoreCase(flag)) {
System.out.println("————————————————————————————————————");
System.out.println("數(shù)量 金額 單價(jià)");
System.out.println("————————————————————————————————————");
for(int i=0; itotals.size(); i++){
System.out.println(" "+numbers.get(i)+" "+totals.get(i)+" "+prices.get(i));
System.out.println("————————————————————————————————————");
}
System.out.println("\n購(gòu)物結(jié)束,歡迎下次光臨!!");
break;
}
}
}
你直接復(fù)制,到程序內(nèi)跑跑,看看是不是你要的效果吧
學(xué)生操作2:
public static void main(String[] args) {
int shirtPrice = 245; //T恤價(jià)格
int shoePrice = 570; //網(wǎng)球鞋價(jià)格
int padPrice = 320; //網(wǎng)球拍價(jià)格
int shirtNo=2; //T恤件數(shù)
int shoeNo =1; //運(yùn)動(dòng)鞋數(shù)目
int padNo = 1; //網(wǎng)球拍數(shù)目
double discount = 0.8;
/*計(jì)算消費(fèi)總金額*/
double finalPay = (shirtPrice * shirtNo + shoePrice * shoeNo + padPrice * padNo) * discount;
//System.out.println("消費(fèi)總金額:" + finalPay);
/*計(jì)算找錢*/
double returnMoney = 1500-finalPay;
/*打印購(gòu)物小票*/
System.out.println("********消費(fèi)單********");
System.out.println("購(gòu)買物品\t" + "單價(jià)\t" + "個(gè)數(shù)\t"+ "金額\t");
System.out.println("T恤\t" + "¥"+shirtPrice+ "\t" + shirtNo+ "\t" + "¥"+(shirtPrice * shirtNo)+"\t");
System.out.println("網(wǎng)球鞋\t" + "¥"+shoePrice + "\t"+ shoeNo+ "\t" + "¥"+(shoePrice * shoeNo)+ "\t");
System.out.println("網(wǎng)球拍\t" + "¥"+padPrice + "\t"+ padNo+ "\t" + "¥"+(padPrice * padNo)+ "\t\n");
System.out.println("折扣:\t8折");
System.out.println("消費(fèi)總金額\t" + "¥" + finalPay);
System.out.println("實(shí)際交費(fèi)\t¥1500");
System.out.println("找錢\t" + "¥" + returnMoney);
/*計(jì)算本次購(gòu)物所獲積分*/
int score = (int)finalPay / 100 * 3;
System.out.println("本次購(gòu)物所獲的積分是: " + score);
}
學(xué)生操作3:
mport java.util.Scanner;
public class GookLuck {
/*
* 幸運(yùn)抽獎(jiǎng)
*/
public static void main(String[] args) {
int custNo; // 客戶會(huì)員號(hào)(說(shuō)明:customer---客戶)
// 輸入會(huì)員卡號(hào)
System.out.println("請(qǐng)輸入4為會(huì)員卡號(hào):");
Scanner input = new Scanner(System.in);
custNo = input.nextInt();
// 獲得每位數(shù)字
int gewei = custNo % 10; // 分解獲得個(gè)位數(shù)
int shiwei = custNo / 10 % 10; // 分解獲得十位數(shù)
int baiwei = custNo / 100 % 10; // 分解獲得百位數(shù)
int qianwei = custNo / 1000; // 分解獲得千位數(shù)
// 計(jì)算數(shù)字之和
int sum = gewei + shiwei + baiwei + qianwei;
System.out.println("會(huì)員卡號(hào)" + custNo + "各位之和: " + sum);
}