Penggunaan JasperReport di Java Desktop ( Swing )

Posting ini adalah posting pertama buat bulan Juni, ternyata udah cukup lama gak posting. Heheheh. Bulan lalu telah dibahas tentang JasperReport dan terdapat salah satu contoh penggunaannya pada JSF 2. Kali ini kita akan menggunakan JasperReport pada aplikasi Java Desktop / Java SE.

Library yang dibutuhkan untuk project ini adalah sebagai berikut :

  1. Netbeans IDE 7.1
  2. IReport 4.5.0
  3. JasperReport 4.5.0
  4. Spring Framework 3.0.6

Untuk file JRXML yang digunakan sama dengan yang digunakan pada project untuk JSF yang telah diposting sebelumnya, buat yang belum tahu berikut tampilan dari file JRXML saat dibuka dengan IReport.

 

Langkah berikutnya, kita buat project dengan menggunakan Netbeans. Disini tidak ditunjukkan pembuatan project pada netbeans. Kita langsung melangkah pada pembuatan kelas entity Pegawai.java

package achmad.entity;

/**
*
* @author AchmadLutfi
*/
public class Pegawai {
private String nip;
private String nama;
private String alamat;
private String telp;

public String getAlamat() {
return alamat;
}

public void setAlamat(String alamat) {
this.alamat = alamat;
}

public String getNama() {
return nama;
}

public void setNama(String nama) {
this.nama = nama;
}

public String getNip() {
return nip;
}

public void setNip(String nip) {
this.nip = nip;
}

public String getTelp() {
return telp;
}

public void setTelp(String telp) {
this.telp = telp;
}

}

Kemudian kita buat kelas yang digunakan untuk menangani viewnya, kali ini kita memakai JFrame. Kelas yang dibuat kita beri nama Main.java.
Karena panjangya source code kelas Main.java, maka hanya inner kelas ReportWorker saja yang ditampilkan. Inner Class ini meng-extend kelas SwingWorker.

class ReportWorker extends SwingWorker<Object, Object>{
private String file;
private HashMap parameter;
private JButton button;

private List<Pegawai> listPegawai;

public ReportWorker() {
listPegawai = new ArrayList<Pegawai>();
for (int i = 0; i < 100; i++) {
Pegawai pegawai = new Pegawai();
pegawai.setNip("10106031" + i);
pegawai.setNama("Achmad Lutfi");
pegawai.setAlamat("Banyuwangi");
pegawai.setTelp("0123456");
listPegawai.add(pegawai);
}

parameter = new HashMap();
}

public void setVar(String file, JButton button) {
this.file = file;
this.button = button;
}

@Override
protected Object doInBackground() throws Exception {
button.setEnabled(false);
progressBar.setIndeterminate(true);

JRDataSource datasource = new JRBeanCollectionDataSource(listPegawai);
parameter.put(JRParameter.REPORT_DATA_SOURCE, datasource);
InputStream streamReport = JRLoader.getResourceInputStream(file);
JasperPrint jasperPrint = null;
JRViewer jRViewer;

try {
System.out.println(parameter);
jasperPrint = JasperFillManager.fillReport(streamReport, parameter);

} catch (JRException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}



jRViewer = new JRViewer(jasperPrint);
reportPanel.removeAll();
reportPanel.add(jRViewer);
reportPanel.revalidate();

return null;
}

@Override
protected void done(){
button.setEnabled(true);
progressBar.setIndeterminate(false);
}
}

Inner Class diatas bertugas untuk memproses report di background, hal ini berfungsi agar tampilan swing dapat berjalan normal.
Penggunaan SwingWorker sangat membantu untuk menyelesaikan proses proses yang memakan waktu cukup lama, seperti memproses laporan.

Tampilan program saat pertama kali dijalankan adalah sebagai berikut :

Tampilan reportnya adalah sebagai berikut :

Buat temen temen yang mau download source project ini, dapat di download di link berikut : http://achmad-project.googlecode.com/files/JasperOnSwing.7z

, , , , , , ,

  1. #1 by nexus4rif on June 16, 2012 - 8:29 am

    wow, blog yg bagus sekali gan! BTW, punya ide atau contoh buat inspirasi program yg bisa dibuat dalam waktu -+ 1 jam ga? buat ane latihan n belajar tuk UAS nanti,coz langsung praktek depan dosen gan..

  2. #2 by Achmad on June 16, 2012 - 9:29 am

    Pake java gan?

    di blog ini ada aplikasi buat authentication tapi digabungin ama squid. codenya dikit kok.

    https://achmadlutfi.wordpress.com/progra/squid-mysql-java-auth/

  3. #3 by nexus4rif on June 16, 2012 - 10:16 am

    iya pake java, pake netbeans ama mysql ada gk yg simple tapi bagus?

    • #4 by Achmad on June 16, 2012 - 10:22 am

      Link yang q kasih tadi udah pake MySQL juga kok.

      • #5 by nexus4rif on June 16, 2012 - 10:33 am

        oya? oke deh langsung ta sedott yah?
        arigatou gozaimasu..

        eh,kalo game sederhana dibikin pakai netbeans ada gk gan? (ngelunjak mode on ^^)

      • #6 by Achmad on June 16, 2012 - 10:44 am

        Aq belum belajar kalo buat game pake netbeans. hehehehe… masih belajar juga iki.

        Kalo mau belajar ada kok plugin OpenGL buat netbeans.

      • #7 by nexus4rif on June 16, 2012 - 10:56 am

        nanya lg nih, netbeans terbaru n stabil ver brp ya? trus java jdk nya yg brp jg?

      • #8 by Achmad on June 17, 2012 - 7:10 am

        Kalo skrg ini pake jdk 1.6.30 ama netbeans 7.1. Dulu pernah nyoba jdk 7 tapi banyak library yang gak mau jalan.

  4. #9 by newbie on January 5, 2014 - 9:25 am

    bang ahmad, minta penjelasan meengenai JasperReport dong..
    saya udah ngikuti cara yang diatas, tapi kok di netbeans saya, kelas “import net.sf.jasperreports.” gk ada ya bang ?
    mohon penjelasannya.

    • #10 by Achmad on January 28, 2014 - 4:39 am

      Library jasper udah dimasukin ke project netbeans blum ini?

      masukin dulu ke projectnya, ntar baru bisa di import.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: