Io ho fatto così in una mia applicazione
Nella grafica stampa è un bottone
Codice PHP:

stampa
.addActionListener(new ActionListener() {             
public 
void actionPerformed(ActionEvent arg0) {                 
                
new 
Reporter(conn).start();     
                
}         
}); 
Ecco la classe report

Codice PHP:
public class Reporter extends Thread {
    private 
JasperPrint jp;
    private 
String REPORTS_FOLDER "C:\\";//File .jrxml
    
private Connection conn;
    public 
Reporter(Connection conn){
        
this.conn=conn;
    }
    public 
void run() {
        
String reportName="Prova";
        
String reportPath REPORTS_FOLDER reportName;
        
JasperReport jr null;
        try {
            
jr=ReportLoader.loadReport(reportPath);
            
jp ReportFiller.fillReport(connnulljr);
            new 
JasperViewer(jp,false).setVisible(true);
        } catch (
JRException jre) {
            
JOptionPane.showMessageDialog(null,"Errore nella creazione del report");
        }
    }

E il gioco è fatto.
Fammi Sapere