Dúvida sobre impressão!

3 respostas
A

Galera... é o seguinte, vou especificar totalmente o meu problema:

Tenho o seguinte programa onde eu gerencio dados por uma tabela. Todos os dados são pegos de um banco e atualizados em tempo real quando o programa está sendo executado:

[img]http://img67.imageshack.us/img67/2726/postkj3.jpg[/img]

Pois então, não sei como eu posso imprimir essa tabela numa página. Gostaria de imprimir só os três campos centrais da tabela de cada dado.

Meu código de impressão está funcionando maneiro quando se passa uma String. A não ser que ele não pula para a linha de baixa quando o String é muito grande:
package imp;

import java.awt.print.Paper;
import java.net.*;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

import javax.print.PrintService;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.JobName;
import javax.print.attribute.standard.OrientationRequested;

public class Impressao implements Printable {
    
    /**
     * Efetua impressão do texto passado como parâmetro.
     * @param texto
     */
    public Impressao(String texto) {
         text += texto;
         Paper paper = new Paper();
         paper.setImageableArea(-10,-10,500,500);
         PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
         aset.add(OrientationRequested.PORTRAIT);
         aset.add(new Copies(1));
         aset.add(new JobName("Relatório", null));
         /*
          * Cria um "Printer job"
          */
         PrinterJob pj = PrinterJob.getPrinterJob();
         pj.setPrintable(this);        
         /* 
          * Localiza um serviço de impressão
          * que possa tratar esta requisção.
          */
         PrintService[] services = PrinterJob.lookupPrintServices();
 
         if (services.length > 0) {
             System.out.println("Impressora selecionada: " + services[0].getName());
             try {
                 pj.setPrintService(services[0]);
                 pj.pageDialog(aset);
                 if (pj.printDialog(aset)) {
                     pj.print(aset);
                 }
             } catch (PrinterException pe) {
                 System.err.println(pe);
             }
         }
     }

    /**
     * Método necessário quando a interface Printable é implementada.
     */
    public int print(Graphics g, PageFormat pf, int pageIndex) {

        if (pageIndex == 0) {
            Graphics2D g2d = (Graphics2D) g;
            g2d.translate(pf.getImageableX(), pf.getImageableY());
            g2d.setColor(Color.black);

            /*
             * Imprime o texto passado, na coluna 10 e na linha 5 
             * da página a ser impressa 
             */
            g2d.drawString(text, 10, 10);

            return Printable.PAGE_EXISTS;
        } else {
            return Printable.NO_SUCH_PAGE;
        }
    }
    
    private String text = "";
}

Mas o que eu realmente queria era imprimir uma tabela com bordas e talz com os dados que estão na tela no momento.

Se alguém tiver alguma sugestão eu agradeço!

Espero a resposta! vlw!

3 Respostas

A

Olá arthurthiago.

Tu podes imprimir a tabela com

MessageFormat headerFormat = new MessageFormat("O teu título");
    MessageFormat footerFormat = new MessageFormat("o teu footer");
    jTable1.print(JTable.PrintMode.FIT_WIDTH, headerFormat, footerFormat);

mas não fica assim muito profissional, e imprime todos os campos da tabela.

No teu caso optaria por relatórios, com jasperReports e iReports

http://www.guj.com.br/java.tutorial.artigo.151.1.guj
http://www.guj.com.br/posts/list/13308.java

Espero que tenha ajudado, boa sorte ai :wink:

A

Po cara… não sabia desse método da classe jTable… eheh manero…

Mas aí… esse método já quebra muito o meu galho. Só o que eu quero saber é como eu posso aumentar o tamanho da fonte.

Eu tava dando uma olhada agora aqui e parece que a fonte se ajusta para caber na página… é verdade isso?

A

Penso que a fonte se ajusta ao tamanho da página, mas não tenho certezas…
:???:

Criado 8 de março de 2007
Ultima resposta 10 de mar. de 2007
Respostas 3
Participantes 2