Imprimir Conteúdo do textfields+jtable

0 respostas
Salax

Olá!

Estou na seguinte situação: Tenho um form que contém alguns textfields e uma jtable, consegui encontrar, aqui no fórum, uma função que imprime a tabela, mas não o conteúdo do textfields. A minha pergunta é: Tem como implementar no mesmo código ou tenho que usar outro, se tenho que implementar outro como faze-lo?

Segue Foto da aparência da impressão:

[url]http://imagizer.imageshack.us/v2/800x600q90/197/1x9r.png[/url]

Obrigado.

Código

public class Imprimir implements  Printable{
        
        private JTable table;     
        private PrinterJob printerJob;     
        private Graphics graphics;     
        private Graphics2D graphics2d;     
             
          
        public void ImprimirJTable(JTable table){ //chama esse metodo e coloca tua tabela no parametro    
                   
                this.table =   table;     
                     
                printerJob  =   PrinterJob.getPrinterJob();     
                printerJob.setPrintable(this);     
                printerJob.setJobName("Relatório");     
                     
                if  (printerJob.printDialog())     
                {     
                    try     
                    {     
                            printerJob.print();     
                    }     
                    catch   (PrinterException ex)     
                    {     
                            JOptionPane.showMessageDialog(  null,     
                                                            "Ocorreu um erro durante a impressão. \n"+ex.toString(),     
                                                            "Erro do Sistema",     
                                                            JOptionPane.ERROR_MESSAGE     
                                                        );     
                    }     
                }     
        }     
             
          
        public int print(  Graphics g,PageFormat pageFormat, int pageIndex)throws  PrinterException{     
                     
                    graphics2d      =   (Graphics2D)    g;     
                    graphics2d.setColor(Color.black);     
                     
                int fontHeight      =   graphics2d.getFontMetrics().getHeight();     
                     
                int fontDesent      =   graphics2d.getFontMetrics().getDescent();     
    
                // leave room for page number     
                  
                double pageHeight      =   pageFormat.getImageableHeight()-fontHeight;     
                double pageWidth       =   pageFormat.getImageableWidth();     
                double tableWidth      =   (double) table.getColumnModel().getTotalColumnWidth();     
                double scale           =   1;     
                     
                if (tableWidth  >=   pageWidth){     
                    scale   =  pageWidth / tableWidth;     
                }     
    
                double     
                headerHeightOnPage  =   table.getTableHeader().getHeight()*scale;     
                     
                double     
                tableWidthOnPage        =   tableWidth*scale;     
    
                double     
                oneRowHeight        =   (table.getRowHeight()+ table.getRowMargin())*scale;     
                     
                int     
                numRowsOnAPage      =   (int)   ((pageHeight-headerHeightOnPage)/oneRowHeight);     
                     
                double     
                pageHeightForTable  =   oneRowHeight*numRowsOnAPage;     
                     
                int     
                totalNumPages       =   (int)   Math.ceil( ( (double)table.getRowCount() ) / numRowsOnAPage);     
                     
                if  (pageIndex  >=   totalNumPages){     
                        return      NO_SUCH_PAGE;   //No more pages     
                }     
    
                graphics2d.translate(   pageFormat.getImageableX(),     
                                        pageFormat.getImageableY()     
                                        );     
                     
                graphics2d.translate(   0f,     
                                        headerHeightOnPage     
                                        );     
                     
                graphics2d.translate(   0f,     
                                        -pageIndex*pageHeightForTable     
                                        );     
    
                // If this piece of the table is smaller than the size available,     
                // clip to the appropriate bounds.     
                if (pageIndex + 1 == totalNumPages){     
                             
                        int     
                        lastRowPrinted      =   numRowsOnAPage * pageIndex;     
                             
                        int     
                        numRowsLeft     =   table.getRowCount() - lastRowPrinted;     
                             
                        graphics2d.setClip( 0,     
                                            (int)   (pageHeightForTable * pageIndex),     
                                            (int)   Math.ceil(tableWidthOnPage),     
                                            (int)   Math.ceil(oneRowHeight * numRowsLeft)     
                                            );     
                }     
                // else clip to the entire area available.     
                else{         
                        graphics2d.setClip( 0,     
                                            (int)   (pageHeightForTable*pageIndex),     
                                            (int)   Math.ceil(tableWidthOnPage),     
                                            (int)   Math.ceil(pageHeightForTable)     
                                            );             
                }     
    
                graphics2d.scale(   scale,     
                                    scale     
                                    );     
                     
                table.paint(graphics2d);     
                     
                graphics2d.scale(   1 / scale,     
                                    1 / scale     
                                    );     
                     
                graphics2d.translate(   0f,     
                                        pageIndex * pageHeightForTable     
                                        );     
                     
                graphics2d.translate(   0f,     
                                        -headerHeightOnPage     
                                        );     
                     
                graphics2d.setClip( 0,     
                                        0,     
                                        (int)   Math.ceil(tableWidthOnPage),     
                                        (int)   Math.ceil(headerHeightOnPage)     
                                        );     
                     
                graphics2d.scale(   scale,     
                                    scale     
                                    );     
                     
                table.getTableHeader().paint(graphics2d);  // paint header at top     
    
                return Printable.PAGE_EXISTS;       // continues printing     
        }     
}
Criado 16 de janeiro de 2014
Respostas 0
Participantes 1