请问,在jbuilder中怎么实现打印? 啥意思呀?你的jbuilder没有打印功能吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的意思不会是让jbuilder为你自动实现打印功能的代码把:) import java.awt.*;import java.awt.event.*;import java.awt.font.*;import java.awt.geom.*;import java.awt.print.*;import java.util.*;import javax.swing.*;public class BookTest{ public static void main(String[] args) { JFrame frame=new BookTestFrame();//»ù±¾µÄJAVAÓ¦ÓóÌÐò´°¿Ú£¬¿ÉÌí¼Ó×é¼þ frame.show(); }} class BookTestFrame extends JFrame implements ActionListener//ActionListener½Ó¿Ú£¬ÊÜÐÅÕß½Ó¿Ú£¬ÓÃÓÚ½ÓÊܶ¯×÷ʼþ { public BookTestFrame() { setTitle("bookTest"); setSize(300,100); addWindowListener(new WindowAdapter() { public void windwoClosing(WindowEvent e) { System.exit(0); } }); Container contentPane=getContentPane(); text=new JTextField(); contentPane.add(text,"South"); JPanel buttonPanel=new JPanel(); printButton=new JButton("Print"); buttonPanel.add(printButton); printButton.addActionListener(this); pageSetupButton=new JButton("Page setup"); buttonPanel.add(pageSetupButton); pageSetupButton.addActionListener(this); printPreviewButton=new JButton("Print prebview"); buttonPanel.add(printPreviewButton); printPreviewButton.addActionListener(this); contentPane.add(buttonPanel,"North"); } public Book makeBook() { if (pageFormat==null) { PrinterJob printJob=PrinterJob.getPrinterJob(); pageFormat=printJob.defaultPage(); } Book book=new Book(); String message=text.getText(); Banner banner=new Banner(message); int pageCount=banner.getPageCount((Graphics2D)getGraphics(),pageFormat); book.append(new CoverPage(message+"("+pageCount+"pages)"),pageFormat); book.append(banner,pageFormat,pageCount); return book; } public void actionPerformed(ActionEvent event) { Object source=event.getSource(); if(source==printButton) { PrinterJob printJob=PrinterJob.getPrinterJob(); printJob.setPageable(makeBook()); if(printJob.printDialog()) { try { printJob.print(); } catch(Exception exception) { JOptionPane.showMessageDialog(this,exception); } } } else if (source==pageSetupButton) { PrinterJob printJob=PrinterJob.getPrinterJob(); if (pageFormat==null) pageFormat=printJob.defaultPage(); pageFormat=printJob.pageDialog(pageFormat); } else if (source==printPreviewButton) { PrintPreviewDialog dialog=new PrintPreviewDialog(makeBook()); dialog.show(); } } private JButton printButton; private JButton pageSetupButton; private JButton printPreviewButton; private JTextField text; private PageFormat pageFormat; } class Banner implements Printable { public Banner(String m) { message=m; } public int getPageCount(Graphics2D g2,PageFormat pf) { if(message.equals(""))return 0; layoutPages(g2,pf); float width=scale *layout.getAdvance(); int pages=(int)Math.ceil(width/pf.getImageableWidth()); return pages; } public int print(Graphics g,PageFormat pf,int page)throws PrinterException { Graphics2D g2=(Graphics2D)g; g2.setPaint(Color.black); if(page>getPageCount(g2,pf)) return Printable.NO_SUCH_PAGE; g2.translate(pf.getImageableX(),pf.getImageableY()); drawPage(g2,pf,page); return Printable.PAGE_EXISTS; } public void layoutPages(Graphics2D g2,PageFormat pf) { if(message.equals(""))return; FontRenderContext context=g2.getFontRenderContext(); Font f=new Font("Serif",Font.PLAIN,72); g2.setFont(f); layout=new TextLayout(message,f,context); float ascent=layout.getAscent(); float descent=layout.getDescent(); float height=ascent+descent; scale=(float)pf.getImageableHeight()/height; } public void drawPage(Graphics2D g2,PageFormat pf,int page) { if(message.equals(""))return; page--; layoutPages(g2,pf); drawCropMarks(g2,pf); g2.clip(new Rectangle2D.Double(0,0,pf.getImageableWidth(),pf.getImageableHeight())); g2.translate(-page*pf.getImageableWidth(),0); g2.scale(scale,scale); AffineTransform transform=AffineTransform.getTranslateInstance(0,layout.getAscent()); Shape outline=layout.getOutline(transform); g2.draw(outline); } public void drawCropMarks(Graphics2D g2,PageFormat pf) { final double C=36; double w=pf.getImageableWidth(); double h=pf.getImageableHeight(); g2.draw(new Line2D.Double(0,0,0,0)); g2.draw(new Line2D.Double(0,0,C,0)); g2.draw(new Line2D.Double(w,0,w,0)); g2.draw(new Line2D.Double(w,0,w-C,0)); g2.draw(new Line2D.Double(0,h,0,h-C)); g2.draw(new Line2D.Double(0,h,C,h)); g2.draw(new Line2D.Double(w,h,w,h-C)); g2.draw(new Line2D.Double(w,h,w-C,h)); } private String message; private float scale; private float width; private TextLayout layout; }class CoverPage implements Printable{ public CoverPage(String t) { title=t; } public int print(Graphics g,PageFormat pf,int page) throws PrinterException { if(page>=1)return Printable.NO_SUCH_PAGE; Graphics2D g2=(Graphics2D)g; g2.setPaint(Color.black); g2.translate(pf.getImageableX(),pf.getImageableY()); FontRenderContext context=g2.getFontRenderContext(); Font f=g2.getFont(); TextLayout layout=new TextLayout(title,f,context); float ascent=layout.getAscent(); g2.drawString(title,0,ascent); return Printable.PAGE_EXISTS; } private String title;}class PrintPreviewDialog extends JDialog implements ActionListener{ public PrintPreviewDialog(Printable p,PageFormat pf,int pages) { Book book=new Book(); book.append(p,pf,pages); layoutUI(book); } public PrintPreviewDialog(Book b) { layoutUI(b); } public void layoutUI(Book book) { setSize(400,550); Container contentPane=getContentPane(); canvas=new PrintPreviewCanvas(book); contentPane.add(canvas,"Center"); JPanel buttonPanel=new JPanel(); nextButton=new JButton("Next"); buttonPanel.add(nextButton); nextButton.addActionListener(this); previousButton =new JButton("Previous"); buttonPanel.add(previousButton); previousButton.addActionListener(this); closeButton=new JButton("Close"); buttonPanel.add(closeButton); closeButton.addActionListener(this); contentPane.add(buttonPanel,"South"); } public void actionPerformed(ActionEvent event) { Object source=event.getSource(); if(source==nextButton) { canvas.flipPage(1); } else if(source==previousButton) { canvas.flipPage(1); } else if(source==closeButton) { setVisible(false); } } private JButton nextButton; private JButton previousButton; private JButton closeButton; private PrintPreviewCanvas canvas;}class PrintPreviewCanvas extends JPanel{ public PrintPreviewCanvas(Book b) { book=b; currentPage=0; } public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2=(Graphics2D)g; PageFormat pageFormat=book.getPageFormat(currentPage); double xoff; double yoff; double scale; double px=pageFormat.getWidth(); double py=pageFormat.getHeight(); double sx=getWidth()-1; double sy=getHeight()-1; if(px/py<sx/sy) { scale=sy/py; xoff=0.5*(sx-scale*px); yoff=0; } else { scale=sx/px; xoff=0; yoff=0.5*(sy-scale*py); } g2.translate((float)xoff,(float)yoff); g2.scale((float)scale,(float)scale); Rectangle2D page=new Rectangle2D.Double(0,0,px,py); g2.setPaint(Color.black); g2.fill(page); g2.setPaint(Color.white); g2.fill(page); Printable printable=book.getPrintable(currentPage); try { printable.print(g2,pageFormat,currentPage); } catch(PrinterException exception) { g2.draw(new Line2D.Double(0,0,px,py)); g2.draw(new Line2D.Double(0,px,0,py)); } } public void flipPage(int by) { int newPage=currentPage+by; if(0<=newPage&&newPage<book.getNumberOfPages()) { currentPage=newPage; repaint(); } } private Book book; private int currentPage;} Could not find the mian class:NewJFrame,project will exit 阶乘和,结果全是1,惨 又是一个路径问题 javabean 跪求各位大大,用java程序写出农历?不回答,我就不起来了-_-! 很少人问的问题,防止反编译,大家给点意见 Calebdar与Date的问题,救命啊 怎么样通过IP地址获得主机名? 谁知道JBUILDER中怎样使用鼠标滑轮 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊? Frame标题位置的问题 请教 一个关于date的奇怪问题 请问javabean使用问题,我不知道错在那里?帮我!!!
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.print.*;
import java.util.*;
import javax.swing.*;
public class BookTest
{
public static void main(String[] args)
{
JFrame frame=new BookTestFrame();//»ù±¾µÄJAVAÓ¦ÓóÌÐò´°¿Ú£¬¿ÉÌí¼Ó×é¼þ
frame.show();
}
}
class BookTestFrame extends JFrame implements ActionListener//ActionListener½Ó¿Ú£¬ÊÜÐÅÕß½Ó¿Ú£¬ÓÃÓÚ½ÓÊܶ¯×÷ʼþ
{
public BookTestFrame()
{
setTitle("bookTest");
setSize(300,100);
addWindowListener(new WindowAdapter()
{ public void windwoClosing(WindowEvent e)
{ System.exit(0);
}
});
Container contentPane=getContentPane();
text=new JTextField();
contentPane.add(text,"South");
JPanel buttonPanel=new JPanel();
printButton=new JButton("Print");
buttonPanel.add(printButton);
printButton.addActionListener(this); pageSetupButton=new JButton("Page setup");
buttonPanel.add(pageSetupButton);
pageSetupButton.addActionListener(this); printPreviewButton=new JButton("Print prebview");
buttonPanel.add(printPreviewButton);
printPreviewButton.addActionListener(this);
contentPane.add(buttonPanel,"North");
}
public Book makeBook()
{
if (pageFormat==null)
{
PrinterJob printJob=PrinterJob.getPrinterJob();
pageFormat=printJob.defaultPage();
}
Book book=new Book();
String message=text.getText();
Banner banner=new Banner(message);
int pageCount=banner.getPageCount((Graphics2D)getGraphics(),pageFormat);
book.append(new CoverPage(message+"("+pageCount+"pages)"),pageFormat);
book.append(banner,pageFormat,pageCount);
return book;
}
public void actionPerformed(ActionEvent event)
{
Object source=event.getSource();
if(source==printButton)
{
PrinterJob printJob=PrinterJob.getPrinterJob();
printJob.setPageable(makeBook());
if(printJob.printDialog())
{
try
{
printJob.print();
}
catch(Exception exception)
{
JOptionPane.showMessageDialog(this,exception);
}
}
}
else if (source==pageSetupButton)
{
PrinterJob printJob=PrinterJob.getPrinterJob();
if (pageFormat==null)
pageFormat=printJob.defaultPage();
pageFormat=printJob.pageDialog(pageFormat);
}
else if (source==printPreviewButton)
{
PrintPreviewDialog dialog=new PrintPreviewDialog(makeBook());
dialog.show();
}
}
private JButton printButton;
private JButton pageSetupButton;
private JButton printPreviewButton; private JTextField text;
private PageFormat pageFormat;
}
class Banner implements Printable
{
public Banner(String m)
{
message=m;
}
public int getPageCount(Graphics2D g2,PageFormat pf)
{
if(message.equals(""))return 0;
layoutPages(g2,pf);
float width=scale *layout.getAdvance();
int pages=(int)Math.ceil(width/pf.getImageableWidth());
return pages;
}
public int print(Graphics g,PageFormat pf,int page)throws PrinterException
{
Graphics2D g2=(Graphics2D)g;
g2.setPaint(Color.black);
if(page>getPageCount(g2,pf))
return Printable.NO_SUCH_PAGE;
g2.translate(pf.getImageableX(),pf.getImageableY()); drawPage(g2,pf,page);
return Printable.PAGE_EXISTS;
}
{
if(message.equals(""))return;
FontRenderContext context=g2.getFontRenderContext();
Font f=new Font("Serif",Font.PLAIN,72);
g2.setFont(f);
layout=new TextLayout(message,f,context);
float ascent=layout.getAscent();
float descent=layout.getDescent();
float height=ascent+descent;
scale=(float)pf.getImageableHeight()/height;
}
public void drawPage(Graphics2D g2,PageFormat pf,int page)
{
if(message.equals(""))return;
page--;
layoutPages(g2,pf);
drawCropMarks(g2,pf);
g2.clip(new Rectangle2D.Double(0,0,pf.getImageableWidth(),pf.getImageableHeight()));
g2.translate(-page*pf.getImageableWidth(),0);
g2.scale(scale,scale);
AffineTransform transform=AffineTransform.getTranslateInstance(0,layout.getAscent());
Shape outline=layout.getOutline(transform);
g2.draw(outline);
}
public void drawCropMarks(Graphics2D g2,PageFormat pf)
{
final double C=36;
double w=pf.getImageableWidth();
double h=pf.getImageableHeight();
g2.draw(new Line2D.Double(0,0,0,0));
g2.draw(new Line2D.Double(0,0,C,0));
g2.draw(new Line2D.Double(w,0,w,0));
g2.draw(new Line2D.Double(w,0,w-C,0));
g2.draw(new Line2D.Double(0,h,0,h-C));
g2.draw(new Line2D.Double(0,h,C,h));
g2.draw(new Line2D.Double(w,h,w,h-C));
g2.draw(new Line2D.Double(w,h,w-C,h));
} private String message;
private float scale;
private float width;
private TextLayout layout;
}
class CoverPage implements Printable
{
public CoverPage(String t)
{
title=t;
}
public int print(Graphics g,PageFormat pf,int page) throws PrinterException
{
if(page>=1)return Printable.NO_SUCH_PAGE;
Graphics2D g2=(Graphics2D)g;
g2.setPaint(Color.black);
g2.translate(pf.getImageableX(),pf.getImageableY());
FontRenderContext context=g2.getFontRenderContext();
Font f=g2.getFont();
TextLayout layout=new TextLayout(title,f,context);
float ascent=layout.getAscent();
g2.drawString(title,0,ascent);
return Printable.PAGE_EXISTS;
}
private String title;
}
class PrintPreviewDialog extends JDialog implements ActionListener
{
public PrintPreviewDialog(Printable p,PageFormat pf,int pages)
{
Book book=new Book();
book.append(p,pf,pages);
layoutUI(book);
}
public PrintPreviewDialog(Book b)
{
layoutUI(b);
}
public void layoutUI(Book book)
{
setSize(400,550); Container contentPane=getContentPane();
canvas=new PrintPreviewCanvas(book);
contentPane.add(canvas,"Center"); JPanel buttonPanel=new JPanel(); nextButton=new JButton("Next");
buttonPanel.add(nextButton);
nextButton.addActionListener(this); previousButton =new JButton("Previous");
buttonPanel.add(previousButton);
previousButton.addActionListener(this); closeButton=new JButton("Close");
buttonPanel.add(closeButton);
closeButton.addActionListener(this); contentPane.add(buttonPanel,"South");
}
public void actionPerformed(ActionEvent event)
{
Object source=event.getSource();
if(source==nextButton)
{
canvas.flipPage(1);
}
else if(source==previousButton)
{
canvas.flipPage(1);
}
else if(source==closeButton)
{
setVisible(false);
}
}
private JButton nextButton;
private JButton previousButton;
private JButton closeButton;
private PrintPreviewCanvas canvas;
}
class PrintPreviewCanvas extends JPanel
{
public PrintPreviewCanvas(Book b)
{
book=b;
currentPage=0;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
PageFormat pageFormat=book.getPageFormat(currentPage); double xoff;
double yoff;
double scale;
double px=pageFormat.getWidth();
double py=pageFormat.getHeight();
double sx=getWidth()-1;
double sy=getHeight()-1;
if(px/py<sx/sy)
{
scale=sy/py;
xoff=0.5*(sx-scale*px);
yoff=0;
}
else
{
scale=sx/px;
xoff=0;
yoff=0.5*(sy-scale*py);
}
g2.translate((float)xoff,(float)yoff);
g2.scale((float)scale,(float)scale); Rectangle2D page=new Rectangle2D.Double(0,0,px,py);
g2.setPaint(Color.black);
g2.fill(page);
g2.setPaint(Color.white);
g2.fill(page);
Printable printable=book.getPrintable(currentPage);
try
{
printable.print(g2,pageFormat,currentPage);
}
catch(PrinterException exception)
{
g2.draw(new Line2D.Double(0,0,px,py));
g2.draw(new Line2D.Double(0,px,0,py));
}
}
public void flipPage(int by)
{
int newPage=currentPage+by;
if(0<=newPage&&newPage<book.getNumberOfPages())
{
currentPage=newPage;
repaint();
}
}
private Book book;
private int currentPage;
}