iReport+Aplicação Desktop

3 respostas
M

Estou desenvolvendo uma aplicação desktop e desenvolvi um relatório no iReport. Gostaria que quando clicasse num botão o relatório fosse chamado. Como faço isso???
Obrigada

3 Respostas

R

criei uma classe no sourceforge pra mostrar um JDialog com opções de impressão:

da uma olhada :slight_smile:

vc cria um botão na sua tela, adiciona um evento nele e chama a tela de impressão assim:

Map<Object, Object> parameters = new HashMap<Object, Object>();
    
    //String name = "Rod";
    //parameters.put( "name", "%" + name + "%" );  // search especific
    parameters.put( "name", "%%" );  // search all
    
    JPrinterDialog printer = new JPrinterDialog(new javax.swing.JFrame(), 
                               true,
                               /*jasperFile*/ "person", 
                               parameters, 
                               getConnection() );
    printer.setVisible( true );

no lugar de getConnection() deve ir seu objeto de conexão com o banco!

[]´s

I
Olá

   Para resolver esse problema criei um package relatórios e dentro dele a classe abaixo, depois disso basta você chamar essa classe através do botão ou menu de sua aplicação. No meu caso usei o Ireporte para gerar o relatório, por isso para rodar precisei copiar toda as bibliotecas do Ireport (C:\Arquivos de programas\JasperSoft\iReport-2.0.5\lib) para dentro do JAVA (C:\Arquivos de programas\Java\jdk1.6.0_06\jre\lib\ext) menos o arquivo "xalan".

//-----------------------------------------------------------------------------------
package relatorios;

import java.util.HashMap;
import javax.swing.JOptionPane;

import net.sf.jasperreports.engine.JRResultSetDataSource;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

import utilidades.conexao;
public class relgeral {

conexao con = new conexao();
public relgeral() {

try

{

con.conecta();

con.executeSQL(SELECT * from dados_agenda);

JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);

JasperPrint jasperPrint = JasperFillManager.fillReport(

relatorio/reltelefonicogeral.jasper, new HashMap(), jrRS); // NOME DA PASTA ONDE ESTA O RELATÓRIO/ NOME DO ARQUIVO .JASPER

JasperViewer.viewReport(jasperPrint,false);

} catch (Exception erro){

JOptionPane.showMessageDialog(null,deu erro =+erro);

}

}
public static void main (String args[])

{

new relgeral(); //DEVE SER MODIFICADA CONFORME O NOME DA CLASSE

}

}

//----------------------------------------------------------------------------------------------------------------------------------------------------------------

Espero ter ajudado, boa sorte.....
G

rodrigobraz:
criei uma classe no sourceforge pra mostrar um JDialog com opções de impressão:

da uma olhada :slight_smile:

vc cria um botão na sua tela, adiciona um evento nele e chama a tela de impressão assim:

Map<Object, Object> parameters = new HashMap<Object, Object>();
    
    //String name = "Rod";
    //parameters.put( "name", "%" + name + "%" );  // search especific
    parameters.put( "name", "%%" );  // search all
    
    JPrinterDialog printer = new JPrinterDialog(new javax.swing.JFrame(), 
                               true,
                               /*jasperFile*/ "person", 
                               parameters, 
                               getConnection() );
    printer.setVisible( true );

no lugar de getConnection() deve ir seu objeto de conexão com o banco!

[]´s

Achei bem interessante seu projeto. Procure divulgar mais :wink:

Criado 6 de setembro de 2006
Ultima resposta 4 de ago. de 2008
Respostas 3
Participantes 4