关于打印及打印预览的问题!

yuanyuanjava 2003-09-19 09:43:07
我要做一个打印表格并预览的程序!其中预览部分就像word那样,通过滚动条来观看.预览的效果却像图示的那样:表头部分没有完全显示,表头有多行,只显示一行;并且表格部分超出窗口范围!我该怎么办!请多帮忙!
其中预览部分的代码如下:
void bnPreview_actionPerformed(ActionEvent e) {//预览按钮
printPreview();
}
public void printPreview(){
if(book==null)
book=createTableBook();//生成一个Book对象
PrintPreviewCanvas canvas=new PrintPreviewCanvas (book,getPercentFromPercentComb());
scrollPane.getViewport().add(canvas);
}
public class PrintPreviewCanvas extends JTextArea {
private TableBook book;
private int currentPage;
private double percent;
public PrintPreviewCanvas(TableBook b,double percent){
super.setBackground(Color.lightGray);
super.setEditable(false);
this.percent=percent;
book = b;
currentPage = 0;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
PageFormat pageFormat = book.getPageFormat(currentPage);

double xoff; // x offset of page start in window
double yoff; // y offset of page start in window
double scale; // scale factor to fit page in window
double pw = pageFormat.getWidth();
double ph = pageFormat.getHeight();
g2.translate(0.0,0.0);
g2.scale(percent,percent);

// draw page outline (ignoring margins)
Rectangle2D page = new Rectangle2D.Double(0, 0, pw, ph);
g2.setPaint(Color.white);
g2.fill(page);
g2.setPaint(Color.black);
g2.draw(page);
Shape oldClip = g2.getClip();
g2.clipRect(0,0,(int)pw,(int)ph);
//g2.clipRect(0,0,300,300);

Printable printable = book.getPrintable(currentPage);
try{
printable.print(g2, pageFormat, currentPage);
}
catch (PrinterException exception){
g2.draw(new Line2D.Double(0, 0, pw, ph));
g2.draw(new Line2D.Double(0, pw, 0, ph));
}
}
public void flipPage(int by){
int newPage = currentPage + by;
if (0 <= newPage && newPage < book.getNumberOfPages()){
currentPage = newPage;
repaint();
}
}

public PrintPreviewCanvas() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
this.setBackground(SystemColor.control);
}
}
...全文
55 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
springson 2003-09-19
  • 打赏
  • 举报
回复
打印和預覽要先設好比例,這樣才會很合適的。

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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