Relatório com parametro com ireport

É o seguinte pessoal eu estava usando o ireport num programa que criei só que sem parametros e ele gerava o relatório de todo os funcionários. Só que queria selecionar um funcionário da Jtable e o relatório puxar somente esse funcionário selecionado e não todos os que existem no banco de dados. E não sei como fazer isso.

Fui no ireport e criei um paramêtro chamado Nome, valor padrão $F{Nome} do tipo String (não usei id tipo integer)

SELECT FUNCIONARIOS.`NOME_FUNC` AS Nome, FUNCIONARIOS.`MATRICULA_FUNC` AS Matrícula, FUNCIONARIOS.`CPF_FUNC` AS CPF, FUNCIONARIOS.`FUNCAO_FUNC` AS Função, DEPARTAMENTO.`NOME_DEPTO` AS Departamento, UNIDADE.`NOME_UNIDADE` AS Unidade FROM `DEPARTAMENTO` DEPARTAMENTO INNER JOIN `FUNCIONARIOS` FUNCIONARIOS ON DEPARTAMENTO.`COD_DEPTO` = FUNCIONARIOS.`COD_DEPTO` INNER JOIN `UNIDADE` UNIDADE ON FUNCIONARIOS.`COD_UNIDADE` = UNIDADE.`COD_UNIDADE` WHERE FUNCIONARIOS.`NOME_FUNC` LIKE '%$P!{Nome}%' dica abaixo do usuário leslie-UFT

Quando clico em preview no ireport ele abre uma janelinha para inserir um valor e coloco o nome do funcionário e sai que é uma beleza.

Criei um método no java que chama a classe conexão.[color=darkred] [/color][size=18] [/size]

[code]private void imprimeRelatorio(String nome) {
try{
Connection con = new Conexao().getConnection();

        String jasperFile = "./Relatorio.jasper";

        String NOME_FUNC = nome;

        HashMap parametro = new HashMap();

        parametro.put("Nome",NOME_FUNC);

        JasperPrint print = JasperFillManager.fillReport(jasperFile, parametro,con);

        JasperViewer viewer = new JasperViewer(print , true);

        viewer.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

         if (print .getPages().size() != 0) {
                     viewer.setExtendedState(JasperViewer.MAXIMIZED_BOTH);
                     viewer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                     viewer.setVisible(true);
         }
        }catch(Exception erro){
            erro.printStackTrace();
        }

}[/code]

E agora como faço para chamar no botão Listar(JButton2) para selecionar um funcionário da jtable e passar o relatório apenas do funcionário selecionado?

Estou usando Netbeans deve chamar pelo evento-> action-> actionperformed ou eventos->mouse->MouseClicked?
Dá para fazer o paramêtro sem usar id integer como acima apenas com o nome string?
Qualquer sugestão para completar o código abaixo será bem vinda?

jTable.getSelectedRow();
imprimeRelatorio();

Brother é o seguinte, na parte da linha do seu código aonde tem

SELECT FUNCIONARIOS.`NOME_FUNC` AS Nome, FUNCIONARIOS.`MATRICULA_FUNC` AS Matrícula, FUNCIONARIOS.`CPF_FUNC` AS CPF, FUNCIONARIOS.`FUNCAO_FUNC` AS Função, DEPARTAMENTO.`NOME_DEPTO` AS Departamento, UNIDADE.`NOME_UNIDADE` AS Unidade FROM `DEPARTAMENTO` DEPARTAMENTO INNER JOIN `FUNCIONARIOS` FUNCIONARIOS ON DEPARTAMENTO.`COD_DEPTO` = FUNCIONARIOS.`COD_DEPTO` INNER JOIN `UNIDADE` UNIDADE ON FUNCIONARIOS.`COD_UNIDADE` = UNIDADE.`COD_UNIDADE` WHERE [b] FUNCIONARIOS.`NOME_FUNC` LIKE $P!{Nome} [/b]
Mude para:
FUNCIONARIOS.NOME_FUNC ILIKE '%$P!{Nome}%'
No PostgreSQL, ILIKE para ele buscar o dado sem levar em consideração Case Sensitive.

Obrigado pela dica, testei e funcionou perfeitamente basta colocar o nome do funcionário e ele gera o relatório apenas para aquele funcionário.

Mas o maior problema é descobrir como chamar esse relatório quando clico e seleciono um funcionário da jtable e visualizar o relatório.
Alguém pode ajudar pelo que já tentei acima.

Alguém???

Bom consegui resolver meu problema, agora consigo gerar o relatório completo ordenado por ordem alfabética num botão, e também gerar relatório por pesquisa de nome para somente a pessoa que inserir na pesquisa noutro botão.
Com isso posso dizer que terminei meu programinha de cadastro, consulta e relatório para usar no meu serviço.
Muitas noites de labuta para corrigir os códigos e para mim foi mais complicado visto que nunca fiz faculdade e nem curso algum de programação.
Aprendi SQL na marra, e a linguagem sempre gostei de java embora tenho uma queda pelo python. Agora vou tentar enxugar meu código e fazer algumas melhorias na aparência.
Obrigado a todos.

Acho que isso pode ajudar:
SQL:

SELECT
     cliente.`id` AS cliente_id,
     cliente.`cnpj` AS cliente_cnpj,
     cliente.`dinicio` AS cliente_dinicio,
     cliente.`mes` AS cliente_mes,
     cliente.`nome` AS cliente_nome,
     cliente.`texto` AS cliente_texto,
     cliente.`valor` AS cliente_valor
FROM
     `cliente` cliente
where id = $P{ID}

Método:

    public void relatorio() throws JRException{
        try {
         Connection con = CriaConexao.getConexao();
         HashMap parametros = new HashMap();
         parametros.put("ID",1);
         JasperPrint jp = JasperFillManager.fillReport("./jasper/subcliente.jasper", parametros, con);
         JasperViewer jv = new JasperViewer(jp);
         jv.setVisible(true);
        
        } catch (SQLException ex) {
            Logger.getLogger(novo.class.getName()).log(Level.SEVERE, null, ex);
        }
   
    }

Esse é um filtro bem básico.

<postei errado, perdão. Alguém pode remover isto?>