一段用于套打的代码,哪位帮忙改一下。

zhongzuo1981 2005-08-01 03:36:03
package com.jfzx.util;

import java.awt.print.*;
import java.awt.*;

public class PrintTest implements Printable {

private String[] value = null;// { "001", "002", "003"};
private int[][] position = null;// { { 10, 50 }, { 30, 70 }, { 50, 90 }};

/**
* implements Printable
*/
public int print(Graphics g, PageFormat pf, int pageIndex) {
/*位置2*/
System.out.println(pageIndex);
//只打一页
if (pageIndex > 0) {
return Printable.NO_SUCH_PAGE;
}

Graphics2D g2d = (Graphics2D) g;
for (int i = 0; i < value.length; i++) {
String str = value[i];
int[] temp = position[i];
int x = temp[0];
int y = temp[1];

g2d.drawString(str, x, y);
}
return Printable.PAGE_EXISTS;
}

/*public static void main(String[] args) {
PrinterJob pj = PrinterJob.getPrinterJob();
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
Paper paper = pf.getPaper();

//假设
double pageWidth = 640;
double pageHeight = 480;
paper.setSize(pageWidth, pageHeight);
paper.setImageableArea(0, 0, pageWidth, pageHeight);
pf.setPaper(paper);

pj.setPrintable(new PrintTest(), pf);
if (pj.printDialog()) {
try {
/*位置1*/
pj.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
}*/

public void printReport(){

PrinterJob pj = PrinterJob.getPrinterJob();
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
Paper paper = pf.getPaper();

//Set Paper Size
double pageWidth = 480;
double pageHeight = 640;
paper.setSize(pageWidth,pageHeight);

paper.setImageableArea(0, 0, pageWidth, pageHeight);
pf.setPaper(paper);

pj.setPrintable(new PrintTest(), pf);

if (pj.printDialog()) {
try {
pj.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
}

/**
* @return 返回 position。
*/
public int[][] getPosition() {
return position;
}
/**
* @param position 要设置的 position。
*/
public void setPosition(int[][] position) {
this.position = position;
}
/**
* @return 返回 value。
*/
public String[] getValue() {
return value;
}
/**
* @param value 要设置的 value。
*/
public void setValue(String[] value) {
this.value = value;
}
}

问题:代码是别人给的例子,要改为从网页提交中得到数据,把value和position属性初始为null,加了set方法。但在页面上set数据后,在代码中/*位置1*/处out.print能打出东西,但在/*位置2*/处就为null了,并且报NullPointerException。为什么会变为null呢?在网页上该怎么调用?
...全文
227 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
vssivl 2005-08-08
  • 打赏
  • 举报
回复
哦,是这样的,public int print(Graphics g, PageFormat pf, int pageIndex) {}方法至少会被调用两次,你可以在里边加一句System.out.println();测试一下。
zhongzuo1981 2005-08-08
  • 打赏
  • 举报
回复
楼上的兄弟,不知道为什么一进入public int print(Graphics g, PageFormat pf, int pageIndex) {}方法,两个数组就成null了。郁闷阿,你是怎么付值得啊?不会是在bean里定义死了吧?
vssivl 2005-08-02
  • 打赏
  • 举报
回复
我们做套打的时候是用应用程序,在客户机上运行,这样得到的就是客户机连接的打印机。如果不是套打,只是打印数据的话,就用Web打印。

那个value为null可能是因为诶有从request里得到数据吧。
zhongzuo1981 2005-08-02
  • 打赏
  • 举报
回复
位置2的地方还没到for()呢,value就是null了,这应该调用的是private String[] value吧?
不明白为什么for (int i = 0; i < value.length; i++) value就为null了?
zhongzuo1981 2005-08-02
  • 打赏
  • 举报
回复
这我倒没想到,如何能让客户端调用后在本地打印阿?
vssivl 2005-08-02
  • 打赏
  • 举报
回复
大哥,你搜索“Web打印”,有太多了。。。
zhongzuo1981 2005-08-02
  • 打赏
  • 举报
回复
有没有web打印的代码阿?我好着急啊
vssivl 2005-08-01
  • 打赏
  • 举报
回复
就是print()函数里的这句吧,
for (int i = 0; i < value.length; i++) {
value为null。



在网页上执行这段代码得到的是服务器上打印机,相当于客户端的数据在服务器上打印了。我不知道你为什么想要得到这种效果。

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧