Eu faço assim.
Botão que chama a classe para criar o relatório.
try {
Folha_de_Chamada f = new Folha_de_Chamada();
f.mostrar_folha_de_chamada(professor, local_aula, modalidade, semana, horario, faixa_etaria, sexo, nivel);
} catch (Exception e) {
System.out.println("botão imprimir "+e.getMessage());
}
A classe
public class Folha_de_Chamada {
Connection con=null;
String sql = null;
ResultSet rs;
Process proc;
List<CadastrarAlunoAula> jtableAA = new ArrayList<>();
String professor, local_aula, modalidade, semana, hora, faixa_etaria, sexo, nivel;
public Folha_de_Chamada(){
con = Validar.Conexao.conectar();
}
public void mostrar_folha_de_chamada(String professor, String local_aula, String modalidade, String semana,
String hora, String faixa_etaria, String sexo, String nivel) throws IOException{
try {
sql = "SELECT aluno.idade_aluno, cadastrar_aluno_aula.matricula_cadastrar_aluno_aula, cadastrar_aluno_aula.aluno_cadastrar_aluno_aula, "
+ "aluno.exame_medico_proximo_aluno, aluno.telresidencial1_aluno, "
+ "aluno.telcelular9_aluno, "
+ "cadastrar_aluno_aula.professor_cadastrar_aluno_aula, "
+ "cadastrar_aluno_aula.local_aula_cadastrar_aluno_aula, "
+ "cadastrar_aluno_aula.modalidade_cadastrar_aluno_aula, "
+ "cadastrar_aluno_aula.semana_cadastrar_aluno_aula, "
+ "cadastrar_aluno_aula.hora_cadastrar_aluno_aula, "
+ "cadastrar_aluno_aula.idade_cadastrar_aluno_aula, "
+ "cadastrar_aluno_aula.sexo_cadastrar_aluno_aula, "
+ "cadastrar_aluno_aula.nivel_cadastrar_aluno_aula "
+ "FROM `cadastrar_aluno_aula` "
+ "Inner join aluno on cadastrar_aluno_aula.matricula_cadastrar_aluno_aula = aluno.matricula_aluno "
+ "where "
+ "professor_cadastrar_aluno_aula ='"+professor+"' and "
+ "local_aula_cadastrar_aluno_aula ='"+local_aula+"' and "
+ "modalidade_cadastrar_aluno_aula ='"+modalidade+"' and "
+ "semana_cadastrar_aluno_aula ='"+semana+"' and "
+ "hora_cadastrar_aluno_aula ='"+hora+"' and "
+ "idade_cadastrar_aluno_aula ='"+faixa_etaria+"' and "
+ "sexo_cadastrar_aluno_aula ='"+sexo+"' and "
+ "nivel_cadastrar_aluno_aula ='"+nivel+"' order by aluno_cadastrar_aluno_aula asc";
PreparedStatement ps = con.prepareStatement(sql);
rs = ps.executeQuery();
JRResultSetDataSource jrRS = new
JRResultSetDataSource(rs) ;
JasperReport report = JasperCompileManager.compileReport(System.getProperty("user.dir")+""
+ "/src/FolhaChamada/FC1.jrxml");
Map parametro = new HashMap();
parametro.put("professor_aula", professor);
parametro.put("local_aula_aula", local_aula);
parametro.put("modalidade_aula", modalidade);
parametro.put("semana_aula", semana);
parametro.put("hora_aula", hora);
parametro.put("faixa_etaria_aula", faixa_etaria);
parametro.put("sexo_aula", sexo);
parametro.put("nivel_aula", nivel);
JasperPrint print = JasperFillManager.fillReport(report, parametro, jrRS);
JasperViewer view = new JasperViewer(print, false);
String home_path=System.getProperty("user.home");
JasperExportManager.exportReportToPdfFile(print,home_path+"/FolhaDeChamada.pdf");
view.setTitle("Folha de Chamada");
view.setExtendedState(Frame.MAXIMIZED_BOTH);
view.setVisible(true);
//}//fim do if result
} catch (SQLException | JRException e) {
System.out.println("e "+e.getMessage());
}
}//fim da folha chamada
}