Problema com geração de relatório

Oi Pessoal , estou precisando de uma ajuda , pois tenho o seguinte problema : preciso gerar um relatório através de um método no java,

eu ja tenho o relatório pronto , usei o iReport para fazer , na verdade eu só preciso chamar este relatório quando eu executar um método em uma classe

ou clicar em um botão.

eu ja tentei vários exemplos mais ainda não consegui fazer ele abrir pelo java.

se poderem me ajudar agradeço desde já.

abraços.

Dá uma olhada aqui: http://www.furutani.com.br/2009/02/usando-o-jrbeancollectiondatasource/

No final do tutorial ensina como chamar o relatório por um método.

Bom cara fiz isso faz algum tempo…usava esta classe aqui… é pra funcionar
Qualquer dúvida pergunta…

[ ]s.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.sql.SQLException;
import java.util.HashMap;
import javax.swing.*;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class mcManterRelProdutos extends mcBotoesRelatorios implements ActionListener,ItemListener{
		JLabel lOrdenarPor, lNome;
		JTextField tNome;
		JRadioButton rCod, rNome;
		ButtonGroup bg;
		JComboBox cOrdenarPor;
		JPanel painelCampos;
		JPanel p1,p2;

		public static void main(String[] args) {
			mcManterRelProdutos  relProdutos = new mcManterRelProdutos();
			relProdutos.setVisible(true);
			relProdutos.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		}
		
		public mcManterRelProdutos() {
			JInternalFrame mcManterRelProdutos = new JInternalFrame("", false, false, false, false);
			
			setTitle("Relatório de Produtos");
			setBounds(200, 200,600, 200);
				
				lNome =new JLabel("Digite um nome: ");
				  lNome.setBounds(40, 40, 200, 40);
				  
				  lOrdenarPor =new JLabel("Ordenar por:   ");
				  lOrdenarPor.setBounds(50, 20, 200, 40);
				  
				  tNome =new JTextField(40);
				  
				  rCod = new JRadioButton("Código");
				  //lNome.setBounds(100, 30, 200, 20);
				  rCod.addItemListener((ItemListener) this);
				  rCod.setSelected(true);
				  
				  rNome = new JRadioButton("Nome");
				  rNome.setBounds(100, 30, 200, 20);
				  rNome.addItemListener((ItemListener) this);
				  
				  bg = new ButtonGroup();
				  bg.add(rCod);
				  bg.add(rNome);
				  
				  p1 =new JPanel();
				  p2 =new JPanel();
				 
				  p2.add(lNome);  
				  p2.add(tNome);
				  p2.add(lOrdenarPor);
				  p2.add(rCod); p2.add(rNome);

				  getContentPane().add(p1);
				  getContentPane().add(p2);
				  
			}

			public void actionPerformed(ActionEvent d) {
				if(d.getSource() == this.btExecutar)
			      {
				    JasperPrint rel = null;
				    String arq = "MCS_PRODUTO.jasper";//nome do arquivo.jasper
				   
			     	
			     	//valor da caixa de texto
				    String ordem = " ";
				    if(rCod.isSelected())
				    {
				    	ordem = "1";
				    }
				    if(rNome.isSelected())
				    {
				    	ordem = "2";
				    }
				    
			    	
				    try {
			    	                 BDConecta bd = new BDConecta(); //classe q se conecta com o banco de dados
			    		 HashMap map = new HashMap();
		            
                                                                                 //passando parametros para o IReport, se houverem
				                 map.put("proDesc","'%"+tNome.getText()+"%'");//valor da caixa de texto , neste caso para nomes q contenham a expressão digitada
			    		 map.put("proOrdem",ordem);//valor para o order by do select do relatório
						 if(bd.conecta())//conecta-se com o banco
			    			    {
			    				  String arquivoJasper = arq;
			    				  //pega o nome do relatório, passa o parâmetro, e o banco
			    				  rel = JasperFillManager.fillReport(arquivoJasper, map,bd.con );
			    				  JasperViewer viewer=new JasperViewer(rel,false);//chama o relatório
			    				  viewer.setTitle("Relatório de Produtos");
			    				  viewer.show();
			    				  bd.con.close();   
			    			    }
						 
						 
			    		 else
			    		 { System.out.println("Problemas na conexão...");}  
			    			  
			    	    } 
			    	catch (JRException e) {
			    			JOptionPane.showMessageDialog(null,e.getMessage());
			    		  } 
			    	catch (SQLException e) {
						  e.printStackTrace();
					     }
			       }
			      

				 if(d.getSource() == this.btLimpar)
			      {
					 tNome.setText("");
					 rCod.setSelected(true);
			      }
				
				 if(d.getSource() == this.btSair)
			      {
					 dispose();	
			      }
			}

			public void itemStateChanged(ItemEvent e) {
				// TODO Auto-generated method stub
				
			}
	}