Ireport com evento em Botão

Galera tudo bem?

Estou tentando aqui tentando fazer para que gere o relatorio quando clico no boão gerar relatório.

Bom vou tentar explicar o funcionamento e coloco a print logo abaixo

  1. Cliente digita id, e seleciona o serviço
  2. quando clicar no gerar relatorio, ele gera um arquivo em pdf

Ja tenho o ireport concluido e trazendo os dados no modo design, só nao consigo implementar na tela de serviço

peguei esse codigo no guj, mas nao consigo fazer funciona se alguem puder me ajudar

Criei uma classe, para trazer os dados
http://pastebin.com/D31CKCJj

e o evendo quando clica no botão
http://pastebin.com/6J7aTbju

aceito sugestoes para melhorar
esse trabalho sera apresentado no meu tcc semana que vem




Olá amigo

segue os fontes para vc usar:


printButton.addActionListener(new OrdemServicoDetailFrame_printButton_actionAdapter(this));


public void printButton_actionPerformed(ActionEvent e) throws JRException, MalformedURLException {
      RelatorioMBean relOrdemservico = new RelatorioMBean(conn);
      StringBuilder query = new StringBuilder();
      
      query.append("select ");
      query.append("ordemservico.id,");      
      query.append("ordemservico.dataordemservico,");
      query.append("ordemservico.fk_cliente,");
      query.append("clientes.nome,");
      query.append("clientes.endereco,");
      query.append("clientes.telefone,");
      query.append("clientes.telcomercial,");
      query.append("clientes.celular,");
      query.append("clientes.complemento,");
      query.append("clientes.cidade,");
      query.append("clientes.uf,");
      query.append("ordemservico.fk_marca,");
      query.append("marca.nome as nomemarca,");
      query.append("ordemservico.fk_tipoequipamento,");
      query.append("tipoequipamento.nome as nomeequipamento,");
      query.append("ordemservico.modelo,");
      query.append("ordemservico.numeroserie,");
      query.append("ordemservico.defeito,");
      query.append("ordemservico.acessorios,");
      query.append("ordemservico.observacao,");
      query.append("ordemservico.garantia,");
      query.append("ordemservico.datacompra,");
      query.append("ordemservico.notafiscal,");
      query.append("ordemservico.numerocertificado,");
      query.append("ordemservico.revendedor,");
      query.append("ordemservico.fabricanteimportador,");
      query.append("ordemservico.desconto,");
      query.append("ordemservico.valor,");
      query.append("ordemservico.valortotal,");
      query.append("ordemservico.situacao ");
      query.append("from ordemservico ");
      query.append("left join marca on marca.id=ordemservico.fk_marca "); 
      query.append("left join tipoequipamento on tipoequipamento.id=ordemservico.fk_tipoequipamento ");
      query.append("left join clientes on clientes.id=ordemservico.fk_cliente ");
      query.append("where ordemservico.id= $P{OS_ID}");
  
      pk =  OrdemServicoDetailFrameController.pk.trim();
      os_id = Integer.parseInt(pk);
      Map<String, Object> parametros = new HashMap<String, Object>();
      parametros.put("PAR_SQL", query.toString());
      parametros.put("OS_ID", os_id);
      
      relOrdemservico.geraRelatorio("ordemservico.jasper", parametros,null);
  }

classe RelatorioMBean:

package br.com.assistenciadesktop.relatorios;


import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.*;

 
public class RelatorioMBean   { 
	//extends AbstractCrudBean<Relatorio> {
    public Connection conn  = null;

	public RelatorioMBean(Connection conn) throws JRException {
           this.conn = conn;
	}

    public void geraRelatorio(String pathReport, Map<String, Object> parametros, ResultSet rs) throws JRException, MalformedURLException {


	URL reportURL = RelatorioMBean.class.getResource("/br/com/assistenciadesktop/relatorios/");
	String reportDir = reportURL.getFile();

	URL relatorioURL = RelatorioMBean.class.getResource(pathReport);
        File file = new File(relatorioURL.getFile());

        JasperReport jr = (JasperReport) JRLoader.loadObject(relatorioURL);
        System.out.println(relatorioURL);
        System.out.println(parametros.values());

        JasperPrint jp = JasperFillManager.fillReport(jr, parametros, conn);
        JasperViewer jv = new JasperViewer(jp, false);
        jv.setVisible(true);

    }

	private static Map<String, Object> getParameter(Map<String, Object> parametros) throws MalformedURLException {
		if(parametros == null){
			parametros = new HashMap<String, Object>();
		}
		URL reportURL = ResourceUtil.getResource("classpath:/reports");
		String reportDir = reportURL.getFile();
		parametros.put("REPORT_PATH", reportDir);
		return parametros;
	}    

}

dentro do seu jasper coloque no report query:

$P!{PAR_SQL}

Silvio Guedes