Archive for July, 2009

Membuat Master Detail Report Menggunakan JRBeansCollections DataSource

Saturday, July 11th, 2009

Banyak sekali pertanyaan dari teman-teman tentang bagaimana cara membuat report dengan menggunakan JRBeansCollection sebagai datasource-nya, sebenarnya konsepnya tidak jauh berbeda dari pembuatan report dengan menggunakan JDBC sebagai datasourcenya. Pada latihan kali ini, sekarang mari kita coba bagaimana sih membuat report menggunakan JRBeansCollection sebagai datasourcenya :) Untuk teman-teman yang belum tahu bagaimana membuat report dengan menggunakan JDBC DataSource, silahkan baca dahulu tulisan tentang Membuat Master Detail Report dengan iReport, dan buat teman-teman yang sudah tidak sabar bagaimana membuat Report dengan menggunakan JRBeansCollections mari langsung kita mulai saja.

Sebelum memulai latihan kali ini, persiapkanlah dahulu perlengkapan yang akan digunakan yaitu :
1. iReport 3.0.0
2. NetBeans IDE 6.7
3. MySQL 5.0.67
4. JDK 1.6.0_13

Setelah semua perlengkan selesai, pada tulisan kali ini akan dibagi menjadi beberapa bagian yaitu :
1. Download Sample Project RptMasterDetail.zip dan RptMasterDetail.sql
2. Modifikasi Report RptMaster.jrxml dan RptDetail.jrxml
3. Menggunakan JRBeansCollections Sebagai DataSource

  1. Download Sample Project RptMasterDetail.zip dan RptMasterDetail.sql
    Sebagai langkah awal, mari kita download dahulu aplikasi RptMasterDetail.zip dan Database schema RptMasterDetail.sql dari tutorial Membuat Master Detail Report dengan iReport dengan cara sebagai berikut :

    [martin@opensolarisbox:~/jrbeans]$ wget -c http://martinusadyh.web.id/download/RptMasterDetail.zip
    --00:49:53--  http://martinusadyh.web.id/download/RptMasterDetail.zip
               => `RptMasterDetail.zip'
    Resolving martinusadyh.web.id... 208.87.243.66
    Connecting to martinusadyh.web.id|208.87.243.66|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 31,118 (30K) [application/zip]
    
    100%[========================================================================================================================================>] 31,118        21.80K/s
    
    00:49:55 (21.75 KB/s) - `RptMasterDetail.zip' saved [31118/31118]
    
    [martin@opensolarisbox:~/jrbeans]$ wget -c http://martinusadyh.web.id/download/RptMasterDetail.sql
    --00:50:03--  http://martinusadyh.web.id/download/RptMasterDetail.sql
               => `RptMasterDetail.sql'
    Resolving martinusadyh.web.id... 208.87.243.66
    Connecting to martinusadyh.web.id|208.87.243.66|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1,824 (1.8K) [text/x-sql]
    
    100%[========================================================================================================================================>] 1,824          6.93K/s
    
    00:50:03 (6.92 KB/s) - `RptMasterDetail.sql' saved [1824/1824]
    
    [martin@opensolarisbox:~/jrbeans]$
    

    Setelah proses download selesai, sekarang restore database schema RptMasterDetail.sql kedalam MySQL dengan cara sebagai berikut :

    [martin@opensolarisbox:~/jrbeans]$ mysql -u root -p < RptMasterDetail.sql
    Enter password:
    [martin@opensolarisbox:~/jrbeans]$
    

    Proses konfigurasi database telah selesai, sekarang kita coba melakukan modifikasi report yang menggunakan JDBC DataSource agar menggunakan JRBeansCollections sebagai datasourcenya :)

  2. Modifikasi Report RptMaster.jrxml dan RptDetail.jrxml
    Ekstrak-lah file RptMasterDetail.zip dengan perintah unzip namafile.zip seperti dibawah ini :

    [martin@opensolarisbox:~/jrbeans]$ unzip RptMasterDetail.zip
    Archive:  RptMasterDetail.zip
      inflating: RptMasterDetail/src/rptmasterdetail/FormReport.java
      inflating: RptMasterDetail/src/rptmasterdetail/FormReport.form
      inflating: RptMasterDetail/src/rptmasterdetail/Main.java
      inflating: RptMasterDetail/nbproject/private/private.xml
      inflating: RptMasterDetail/nbproject/private/private.properties
      inflating: RptMasterDetail/nbproject/project.properties
      inflating: RptMasterDetail/nbproject/project.xml
      inflating: RptMasterDetail/nbproject/build-impl.xml
      inflating: RptMasterDetail/nbproject/genfiles.properties
      inflating: RptMasterDetail/Report/RptDetail.jasper
      inflating: RptMasterDetail/Report/RptMaster.jrxml
      inflating: RptMasterDetail/Report/RptDetail.jrxml
     extracting: RptMasterDetail/Report/netbeans_logo.gif
      inflating: RptMasterDetail/Report/RptMaster.jasper
      inflating: RptMasterDetail/manifest.mf
      inflating: RptMasterDetail/build.xml
    [martin@opensolarisbox:~/jrbeans]$
    

    kemudian bukalah file RptMaster.jrxml dan RptDetail.jrxml yang terdapat pada direktori RptMasterDetail/Report/ pada iReport seperti gambar dibawah ini :
    open_report

    Sekarang coba jalankan report tersebut dari iReport dengan menggunakan Active Connection (buatlah dahulu datasourcenya dengan menggunakan JDBC Connection dan arahkan databasenya ke rptmasterdetail) hingga tampilannya menjadi seperti gambar dibawah ini :
    run_report
    Note: Usahakan report berjalan dengan sukses sampai langkah ini, jika belum berjalan dengan benar silahkan cek ulang lagi mungkin ada konfigurasi yang terlewati.

    Setelah berhasil menjalankan report dengan JDBC Connection sekarang saatnya untuk merubah report kita agar menggunakan JRBeanCollection sebagai datasourcenya, nah agar report kita menggunakan JRBeanCollection kita harus melakukan beberapa modifikasi yang harus dilakukan yaitu :
    (more…)

Swing Component Focus Handler Using KeyStroke Editor

Friday, July 3rd, 2009

Buat teman-teman yang sering membangun aplikasi menggunakan GUI Toolkit Swing pasti sudah tahu bagaimana caranya menambahkan focus handler pada komponen Swing. Sebagai contohnya, kita ingin menambahkan focus pada JTextField agar ketika kita menekan ENTER maka focus akan berpindah ke komponen yang lain. Nah biasanya, langkah yang kita lakukan adalah sebagai berikut :
1. Klik kanan pada JTextField kemudian memilih Event > Key > Key Pressed seperti gambar dibawah ini :
AddKeyPressed
Menambahkan Focus Handler Secara Manual

2. Setelah itu kita tambahkan handler untuk mendeteksi penekanan tombol ENTER kemudian secara manual memindahkan focus ke komponen yang lain seperti kode dibawah ini:

156
157
158
159
160
161
    private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {
        if (evt.getKeyChar() == KeyEvent.VK_ENTER) {
            /* Pindahkan focus ke jTextField2 */
            jTextField2.requestFocusInWindow();
        }
    }

(more…)