Imprimir

6 respostas
marcos2205

Pessoal estou quebrando a cabeça para abrir a opção do windows de impressão…

Ao clicar em um JButton gostaria que abrisse a opção de escolher a impresora do windows…podem me ajudar???

Obrigado,
Boa Noite

6 Respostas

pedroroxd

Só de dar uma pesquisada aki no guj, axei isso:

package br.com.ipuc.Impressao;  
      
    import javax.print.*;  
    import java.io.ByteArrayInputStream;  
    import java.io.InputStream;  
      
    // Essa classe é a responsavel pela impressao. Ela detecta a impressora  
    // instalada, recebe o texto e o imprime.  
    public class Impressao {  
     
       // variavel estatica porque será utilizada por inumeras threads  
       private static PrintService impressora;  
     
       public Impressao() {  
     
           detectaImpressoras();  
     
       }  
     
       // O metodo verifica se existe impressora conectada e a  
       // define como padrao.  
       public void detectaImpressoras() {  
     
           try {  
     
               DocFlavor df = DocFlavor.SERVICE_FORMATTED.PRINTABLE;  
               PrintService[] ps = PrintServiceLookup.lookupPrintServices(df, null);  
               for (PrintService p: ps) {  
     
                   System.out.println("Impressora encontrada: " + p.getName());  
     
                   if (p.getName().contains("Text") || p.getName().contains("Generic"))  {  
     
                       System.out.println("Impressora Selecionada: " + p.getName());  
                      impressora = p;  
                       break;  
     
                   }  
     
               }  
     
           } catch (Exception e) {  
     
               e.printStackTrace();  
     
           }  
     
       }  
     
       public synchronized boolean imprime(String texto) {  
     
           // se nao existir impressora, entao avisa usuario  
           // senao imprime texto  
           if (impressora == null) {  
     
               String msg = "Nennhuma impressora foi encontrada. Instale uma impressora padrão \r\n(Generic Text Only) e reinicie o programa.";  
               System.out.println(msg);  
     
           } else {  
     
               try {  
     
                   DocPrintJob dpj = impressora.createPrintJob();  
                   InputStream stream = new ByteArrayInputStream(texto.getBytes());  
     
                   DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;  
                   Doc doc = new SimpleDoc(stream, flavor, null);  
                   dpj.print(doc, null);  
     
                   return true;  
     
               } catch (PrintException e) {  
     
                   e.printStackTrace();  
     
               }  
     
           }  
     
           return false;  
     
       }  
     
   }
marcos2205

mas isso não me ajuda…preciso de algum exemplo simples com algo pra ler…

é algo simples tipo

JButton print = new JButton ("Imprimir");

e abaixo viria o comando(que eu não sei!)

renanedpedroso

Mostrando as impressoras:

PrinterJob printerJob = PrinterJob.getPrinterJob();
    if (printerJob.printDialog()) {
        try {
            printerJob.print();
        } catch (PrinterException ex) {
            ex.printStackTrace();
        }
    }

Agora tem o seguinte…

Pra imprimir legal você vai ter que dar uma boa lida na documentação, eu pelo menos não achei muito fácil e nem um pouco intuitivo…

Boa sorte!

Espero ter ajudado.

Abraço!

marcos2205

Nâo deu certo…
assim que eu entro na frame já abre a opção das impressoras e quero que ao clicar no botão print abra as opções…

Mas Valeu…

renanedpedroso

marcos2205:
Nâo deu certo…
assim que eu entro na frame já abre a opção das impressoras e quero que ao clicar no botão print abra as opções…

Mas Valeu…

Amigo então seu problema é com evento e não com a impressão.

Exemplo:

JButton botao = new JButton("Imprimir");
//implementar aqui caracteristicas do botao

botao.addActionListener(new java.awt.event.ActionListener() {

   public void actionPerformed(java.awt.event.ActionEvent evento) {
       //chama a função para imprimir aqui dentro
   }

});

Espero ter ajudado.

Abraço!

pedroroxd

Só complementando o que o renaned disso, o problema tá no evento do botão mesmo…
Vc usa netbeans ou eclipse…
Se ainda não souber sobre eventos do botão, recomendo que tente usar pelo console o algoritimo que ele disse, com System.out.print();

Criado 26 de março de 2010
Ultima resposta 27 de mar. de 2010
Respostas 6
Participantes 3