Java 报表和打印的问题

ykuiw 2002-11-27 12:30:21
请问有谁有打印的程序或者软件包了,急用。
...全文
49 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
change 2002-11-28
  • 打赏
  • 举报
回复
Please see www.inetsoft.com
netwebs 2002-11-27
  • 打赏
  • 举报
回复
转别人的
import javax.swing.*;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.event.ActionEvent;

public class ImagePrint extends JFrame {
ImageJPanel image;
Image icon;

public ImagePrint() {
super("ImagePrint");
setSize(400, 400);
icon = Toolkit.getDefaultToolkit().getImage("meng.jpg");
image = new ImageJPanel();
image.setBufferedImage(icon);

JButton button = new JButton("Print");
getContentPane().add(image, BorderLayout.CENTER);
getContentPane().add(button, BorderLayout.SOUTH);
Action action = new AbstractAction() {
public void actionPerformed(ActionEvent ea) {
printIamge();
}
};
button.addActionListener(action);
setVisible(true);

}

public void printIamge() {
try {
PrinterJob print = PrinterJob.getPrinterJob();
print.setPrintable(image);
if (print.printDialog()) {
print.print();

} else {
return;
}
} catch (Exception e) {
System.out.println(e);
}

}

public static void main(String args[]) {
ImagePrint i = new ImagePrint();
}
}

class ImageJPanel extends JPanel implements Printable {

int max_page = 1;
Image buffer = null;

public ImageJPanel() {
}

public void setBufferedImage(Image bi) {
if (bi == null)
return;
buffer = bi;
Dimension d = new Dimension(buffer.getWidth(this),
buffer.getHeight(this));
setPreferredSize(d);
revalidate();
repaint();
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension d = getSize();
g.setColor(getBackground());
g.fillRect(0, 0, d.width, d.height);
if (buffer != null)
g.drawImage(buffer, 0, 0, this);
}


public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException {
if (pageIndex >= max_page || buffer == null) {
return Printable.NO_SUCH_PAGE;
}
graphics.translate((int) pageFormat.getImageableX(), (int) pageFormat.getImageableY());
int v_page = (int) pageFormat.getImageableWidth();
int h_page = (int) pageFormat.getImageableHeight();
int x = buffer.getWidth(this);
int y = buffer.getHeight(this);
if (x == 0 || y == 0) {
return Printable.NO_SUCH_PAGE;
}
int nCol = Math.max((int) Math.ceil((double) x / v_page), 1);
int nRow = Math.max((int) Math.ceil((double) y / h_page), 1);
max_page = nCol * nRow;
int iCol = pageIndex % nCol;
int iRow = pageIndex / nCol;
int w = iCol * v_page;
int h = iRow * h_page;
int wImage = Math.min(v_page, x - w);
int hImage = Math.min(h_page, y - h);
graphics.drawImage(buffer, 0, 0, wImage, hImage,
w, h, w + x, y + hImage, this);

System.gc();
return Printable.PAGE_EXISTS;
}


}
fastmask 2002-11-27
  • 打赏
  • 举报
回复
jdk1.4提供了打印的功能,你可以去看看。

62,614

社区成员

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

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