Printable을 구현하는 클래스가 있습니다. 그 클래스에서는, BufferedImage의 List를 작성하는 public 메소드를 1 페이지에 인쇄합니다. 이제는 PrintDialog를 추가하여 사용자가 인쇄 할 페이지와 인쇄 매수를 선택할 수있게하려고합니다.PrintDialog 사용
나는 인터넷에서 약간의 연구를했는데 아마도 Book
클래스를 사용해야 만한다는 것을 알았지 만, 내 상황에서는이를 사용하는 방법을 알지 못합니다.
누구든지 예제를 제공 할 수 있습니까? 도와 주셔서 감사합니다 ...
확인. 확인
/**
* Starts the print job
* Allows variable scaling
*/
public void startPrint(float scale, JTable rowHeader, JTable mainTable, boolean includeRowHeaders, boolean includeColumnHeaders) throws PrinterException{
//getPages returns a List<BufferedImage
this.pages = getPages(scale, rowHeader, mainTable, includeRowHeaders, includeColumnHeaders);
this.numberOfPages = this.pages.size();
HashPrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
attr.add(new MediaPrintableArea(0f, 0f, 612/72f, 792/72f, MediaPrintableArea.INCH));
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(this);
job.print(attr);
}
편집 : 여기에 내가 사용하고 코드입니다. 나는 진전을 보았다. 이제 새로운 문제입니다. 지금 페이지 범위를 선택할 수는 있지만 PrintSpace 사본 JSpinner는 응답이 없으며 JSpinner 텍스트 필드에 포함 된 내용에 관계없이 각 페이지에 대해 항상 print 메소드가 두 번 호출됩니다. 여기 내 코드가 ...
/**
* Starts the print job
* Allows variable scaling
*/
public void startPrint(float scale, JTable rowHeader, JTable mainTable, boolean includeRowHeaders, boolean includeColumnHeaders) throws PrinterException{
//getPages returns a List<BufferedImage>
this.pages = getPages(scale, rowHeader, mainTable, includeRowHeaders, includeColumnHeaders);
this.numberOfPages = this.pages.size();
HashPrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
attr.add(new JobName("Test Print", null));
attr.add(new MediaPrintableArea(0f, 0f, 612/72f, 792/72f, MediaPrintableArea.INCH));
attr.add(new PageRanges(1, this.numberOfPages));
attr.add(new Copies(1));
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(this);
if(job.printDialog(attr)){
job.print(attr);
}
}
/**
* The actual print routine
* Prints the class level List<BufferedImage>
* one after another
*/
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException
{
if (pageIndex > this.numberOfPages - 1){
return NO_SUCH_PAGE;
}
else{
graphics.drawImage(this.pages.get(pageIndex), 0, 0, null);
JOptionPane.showMessageDialog(null, pageIndex);
return PAGE_EXISTS;
}
}
현재 가지고있는 코드를 보려면 질문을 편집하십시오. 상황을 묘사하는 것은 좋지만 좋지만 실제로 상대방이 자신이 사용하는 것을 볼 수 있으면 자신의 시스템에서 시도 할 수 있다면 사람들이 쉽게 도울 수 있습니다. –
편집하는 동안 사용중인 언어에 대한 태그를 추가하면 도움이됩니다. 그리고 * 책 * 클래스는 당신이 말하는거야? –