Dhafiq Sagara adalah orang bodoh yang tidak bisa apa-apa, tapi dia selalu berusaha untuk terus menjadi yang lebih baik. Rasa keingin-tahuannya sangat tinggi, selalu berusaha dan terus berusaha, trial dan error adalah prinsip belajarnya.

Tampilkan postingan dengan label J2SE. Tampilkan semua postingan
Tampilkan postingan dengan label J2SE. Tampilkan semua postingan

20 Okt 2011

Seaglass - Java Look And Feel

Look and Feel adalah motif atau theme yang disediakan java untuk tampilan aplikasi java desktop.

Seperti yang telah dibahas mengenai look and feel pada postingan sebelumnya, Syntethica Look And Feel dan Office2003 Look And Feel. kali ini terdapat Look And Feel Seaglass yang merupakan salah satu library look and feel yang sifatnya free.



Seperti apa tampilan jendela Seaglass ini?
Spoiler for open Screenshot Seaglass Look And Feel:






Sebelum anda mencoba penggunaan library ini, silahkan download library seaglasslookandfeel-0.1.5.jar

Penggunaan Library Look And Feel Seaglass ini seperti berikut:
  1. Buatlah project baru. 
  2. Tambahkan library seaglasslookandfeel-0.1.5.jar
  3. Kemudian buatlah JFrame Form
  4. Desainlah form sesuai kebutuhan
  5. Pada code, tambahkanlah import berikut
    import com.seaglasslookandfeel.SeaGlassLookAndFeel;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
  6. Kemudian pada fungsi main, source codenya seperti berikut ini:
    public static void main(String args[]) {
       java.awt.EventQueue.invokeLater(new Runnable() {
          public void run() {
             try {
                UIManager.setLookAndFeel(new SeaGlassLookAndFeel());
                new Frame().setVisible(true);
             } catch (UnsupportedLookAndFeelException ex) {
                Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
             }
           }
        });
    }
    

Seaglass google code dapat anda lihat di alamat ini http://code.google.com/p/seaglass/source/browse/
Untuk contoh project, silahkan download SeaglassLookAndFeel.zip

15 Jul 2011

How to use JCalendar in Netbeans

Kali ini kita akan membahas mengenai jCalendar, yang merupakan library yang dapat kita gunakan untuk menampilkan kalender pada aplikasi java desktop (J2SE).

Sebelum melangkah ke tahap percobaan, silahkan download user guide beserta sample source code yang disediakan oleh jCalendar berikut ini, jcalendar-1.3.3.zip.



  1. Oke langsung saja kita bukan editor java kebanggaan kita, yaitu netbeans.
  2. Ekstrak file jcalendar-1.3.3.zip yang sudah anda download pada link di atas.
  3. Klik kanan pada Pallete kemudian pilih Pallete Manager.





















  4. Kemudian pilih Add from JAR
  5. Pilih file jcalendar-1.3.3.jar kemudian tekan tombol Next
  6. Pilih semua komponen: JCalendar, JDateChooser, JDayChooser, JLocaleChooser, JMonthChooser, JSpinField, JYearChooser kemudian tekan tombol Next
  7. Pilih pada Swing Controls kemudian tekan Finish
  8. Terakhir tekan Close

Sekarang anda bisa menggunakan jCalendar pada Frame.
Spoiler for open Screenshot Contoh JCalendar:








12 Jul 2011

Java Source Code Pada Metode Rolling Hash

Hashing adalah suatu cara untuk mentransformasi sebuah string menjadi suatu nilai yang unik dengan panjang tertentu (fixed-length) yang berfungsi sebagai penanda string tersebut. Fungsi untuk menghasilkan nilai ini disebut fungsi hash, sedangkan nilai yang dihasilkan disebut nilai hash.

Contoh sederhana hashing adalah:
Firdaus, Hari
Munir, Rinaldi
Rabin, Michael
Karp, Richard

Menjadi

7864 = Firdaus, Hari
9802 = Munir, Rinaldi
1990 = Rabin, Michael
8822 = Karp, Richard

Contoh di atas adalah penggunaan hashing dalam pencarian pada database. Apabila tidak di-hash, pencarian akan dilakukan karakter-per-karakter pada nama-nama yang panjangnya bervariasi dan ada 26 kemungkinan pada setiap karakter. Namun pencarian akan menjadi lebih efisien setelah di-hash karena kemungkinan setiap angka berbeda. Nilai hash pada umumnya digambarkan sebagai fingerprint yaitu string pendek yang terdiri atas huruf dan angka yang terlihat acak (data biner yang ditulis dalam heksadesimal).

Rolling hash merupakan fungsi yang digunakan untuk menghasilkan nilai hash dari rangkaian gram dalam algoritma winnowing. Fungsi hash H(c1...ck) didefinisikan sebagai berikut:
Rumus Rolling hash

Keterangan:
c : nilai ascii karakter
b : basis (bilangan prima)
k : banyak karakter

Keuntungan dari rolling hash adalah untuk nilai hash berikutnya H(c2...ck+1) dapat dilakukan dengan cara:
Rumus Penghitungan nilah hash berikutnya dengan rolling hash

Dengan begitu tidak perlu melakukan iterasi dari indeks pertama sampai terakhir untuk menghitung nilai hash untuk gram ke-2 sampai terakhir. Hal ini tentu dapat menghemat biaya komputasi saat menghitung nilai hash dari sebuah gram

Berikut flowchart rolling hash:



Berdasarkan rumus rolling hash di atas, berikut source code java untuk fungsi pada metode rolling hash:
public class HashGram {
    public Long rollingHash(String sub) {
        long hash_value = 0;
        int ascii;
        int prev_hash = 0;
        int basis = 3;
        int c_awal = 0;
        int length = sub.length() - 1;
        System.out.println("k = "+sub.length());
        System.out.println("b = "+basis);
        if (prev_hash == 0) {
            for (int i = 0; i <= length; i++) {
                ascii = sub.charAt(i);
                hash_value += (long) (ascii * Math.pow(basis, length - i));
                System.out.println("c ke-"+(i+1)+" adalah huruf '"+sub.charAt(i)+"' bernilai ASCII = "+ascii);
            }
        } else {
            hash_value = prev_hash - (long) (c_awal * Math.pow(basis, length));
            hash_value *= basis;
            hash_value += sub.charAt(length);
        }
        c_awal = sub.charAt(0);
        prev_hash = (int) hash_value;
        System.out.println("Nilai hash pada kata = '"+sub+"' = "+hash_value);
        return hash_value;
    }

    public static void main(String[] args) {
        HashGram hg = new HashGram();
        String text = "dhafiqsagara";
        hg.rollingHash(text);
    }
}


Berikut hasilnya:


5 Jul 2011

Java Look And Feel - Office2003


Beragam Look and Feel untuk java, salah satunya adalah Look and Feel Office 2003. Sebelum menggunakan look and feel ini, silahkan download OfficeLnFs_2.7.jar.

Setelah anda membuat frame dan memasangkan komponen-komponennya, pasangkan code pemanggilan Office2003LookAndFeel() pada main seperti berikut:
public static void main(String args[]) {
    try {
       UIManager.setLookAndFeel(new Office2003LookAndFeel());
    } catch (UnsupportedLookAndFeelException ex) {
       Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
    }
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Frame().setVisible(true);
        }
    });
}

Semoga bermanfaat

4 Jul 2011

Read Doc in Java

How to read doc file in java?

Pembacaan isi dokumen berformat file .doc ini dapat menggunakan library POI. Silahkan download library tersebut disini poi-3.7.zip. Atau anda juga bisa mengunjungi situs resminya di http://poi.apache.org/.

Library buatan apache tidak hanya digunakan untuk membaca doc saja, melainkan bisa untuk pembacaan file excel, powerpoint, xml. Tetapi pada artikel ini, saya hanya memberikan contoh source code untuk pembacaan dokumen berekstensi doc.

Source code read doc in java:
import java.io.*;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;

public class ReadDocFile {
    public static void main(String[] args) {
        File file = null;
        WordExtractor extractor = null;
        try {
            file = new File("my.doc");
            FileInputStream fis = new FileInputStream(file.getAbsolutePath());
            HWPFDocument document = new HWPFDocument(fis);
            extractor = new WordExtractor(document);
            String[] fileData = extractor.getParagraphText();
            for (int i = 0; i < fileData.length; i++) {
                if (fileData[i] != null) {
                    System.out.println(fileData[i]);
                }
            }
        } catch (Exception exep) {
            exep.printStackTrace();
        } catch (NoClassDefFoundError ex){
            ex.printStackTrace();
        }
    }
}

3 Jul 2011

Read PDF in Java

How to read document PDF in Java?
Pada artikel sebelumnya, telah dibuat bagaimana membaca file docx menggunakan java. Sekarang saya akan memberikan contoh source code untuk membaca file berformat pdf melalui java. Untuk membaca file berekstensi PDF memerlukan library, dan library yang digunakan adalah AspriseJavaPDF.



Read Docx in Java

How to read document docx in java??
Berikut source code bagaimanan membaca isi dokumen berekstensi docx pada java. Pada java, untuk membaca file berekstensi docx tidak memerlukan library khusus, teknik pembacaan dokumen docx ini dengan mengekstrak menggunakan zipEntry. Kemudian dari hasil ekstrakan tersebut disimpan pada file xml sebagai penyimpanan temporary, dan terakhir membaca file xml tesebut.



Berikut source code membaca file docx menggunakan java:
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class JavaReadDocx {
    public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
        FileInputStream file = new FileInputStream("my.docx");

        ZipInputStream docXFile = new ZipInputStream(file);
        ZipEntry zipEntry;
        OutputStream out;
        String xml = "";
        while ((zipEntry = docXFile.getNextEntry()) != null) {
            if (zipEntry.toString().equals("word/document.xml")) {
                byte[] buffer = new byte[1024 * 4];
                long count = 0;
                int n = 0;
                long size = zipEntry.getSize();
                out = System.out;

                while (-1 != (n = docXFile.read(buffer)) && count < size) {
                    xml += new String(buffer, 0, n);
                    count += n;
                }
            }
        }
        InputStream is = new ByteArrayInputStream(xml.getBytes("UTF-8"));
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder parser = factory.newDocumentBuilder();

        Document document = parser.parse(is);

        NodeList sections = document.getElementsByTagName("w:t");
        String isidocx = "";
        for (int i = 0; i < sections.getLength(); i++) {
            isidocx += sections.item(i).getFirstChild().getNodeValue();
        }
        System.out.println(isidocx);
    }
}
Semoga bermanfaat

29 Mei 2011

Membuat Transisi Panel Dalam Satu Frame Java

Dalam membuat suatu aplikasi menggunakan java, tidak perlu membuat banyak frame, lebih baik membuat transisi pada panel dalam satu frame. Untuk mengurangi banyaknya resource class yang ada dalam aplikasi java.

Sehingga jika kita membuat aplikasi dengan banyak frame, misalkan frame login, frame menu, frame inputan, dan lain-lain. Kita tidak perlu membuat banyak frame, kita hanya perlu mengubah isi panelnya saja, sehingga tampilan tetap dalam satu jFrame. Yang berubah hanya isinya saja.

Baiklah langsung pada proses pembuatannya:
  1. Buatlah jFrame.
  2. Kemudian desainlah Frame tersebut dengan mengisikan menu-menu utama.
  3. Kemudian buatlah panel utama untuk tempat terjadinya transisi/perubahan isi menu.
    Misalkan tampilannya seperti ini:
    Pada gambar diatas menjelaskan: Button merah, biru, kuning merupakan menu utama. Dan panel dibawahnya yang berwarna putih merupakan panel utama sebagai tempat terjadinya transisi panel. Misal button merah akan menampilkan panel warna merah, button biru menampilkan panel biru, dan button kuning menampilkan panel kuning. Dan yang berubah hanya pada panel saja, menu utama yang terletak pada toolBar di atas tidak akan berubah.
  4. Ubah Layout menjadi Card Layout. Klik kanan pada panel putih - Set Layout - Card Layout
  5. Kemudian tambahkan panel baru pada panel putih tersebut dan beri warna biru
  6. Tambahkan lagi panel baru dan beri warna biru
  7. Dan panel warna kuning
  8. Posisikan panel merah, biru, dan kuning sesuai gambar berikut
  9. Kemudian beri action pada tiap button merah, biru, kuning. Dengan cara double klik pada tiap button atau klik kanan pada button - Events - Action - actionPerformed.

    actionPerformed untuk button merah:
    panelMerah.setVisible(true);
    panelBiru.setVisible(false);
    panelKuning.setVisible(false);


    actionPerformed untuk button biru:
    panelBiru.setVisible(true);
    panelMerah.setVisible(false);
    panelKuning.setVisible(false);


    actionPerformed untuk button kuning:
    panelKuning.setVisible(true);
    panelMerah.setVisible(false);
    panelBiru.setVisible(false);


  10. Kemudian jalankan program tersebut, maka didapatkan hasil seperti berikut:
    Spoiler for open Action Button Merah:



    Spoiler for open Action Button Biru:



    Spoiler for open Action Button Kuning:


Jadi seperti itulah proses yang terjadi pada transisi panel. Sehingga tidak perlu banyak membuat frame untuk tiap form aplikasi. Jadi cukup satu Frame untuk semua form dengan mengganti panelnya saja. Sehingga menu utama tidak mengalami perubahan.

Download Project: FrameWithTransisiPanel (NetbeansProject)

27 Mei 2011

Fungsi Pencarian Dengan Pilihan ComboBox Pada Aplikasi Java Desktop

Jika pada artikel sebelumnya telah dibahas mengenai fungsi pencarian standard, kali ini akan dibahas bagaimana menambahkan pilihan menggunakan jComboBox untuk pencarian berdasarkan kategori tertentu.

Sebenarnya sangat sederhana, dengan menambahkan fungsi if-else pada actionPerformed dari button Search. Sehingga jika memilih kategori tertentu, maka pencarian akan berdasarkan pada pilihan yang ada di ComboBox.



Tambahkan code berikut pada actionPerformed button Search
if (jComboBox1.getSelectedItem() == "nim") {
TableModelMhs model = (TableModelMhs) jTable1.getModel();
String query = null;
query = "lower(nim) like '%" + jTextField4.getText() + "%' ";
model.getRecDB(query);
if (model.getRowCount() > 0) {
jTable1.setRowSelectionInterval(0, 0);
}
jTable1.tableChanged(new javax.swing.event.TableModelEvent(model));
} else if (jComboBox1.getSelectedItem() == "nama") {
TableModelMhs model = (TableModelMhs) jTable1.getModel();
String query = null;
query = "lower(nama) like '%" + jTextField4.getText() + "%' ";
model.getRecDB(query);
if (model.getRowCount() > 0) {
jTable1.setRowSelectionInterval(0, 0);
}
jTable1.tableChanged(new javax.swing.event.TableModelEvent(model));
} else if (jComboBox1.getSelectedItem() == "alamat") {
TableModelMhs model = (TableModelMhs) jTable1.getModel();
String query = null;
query = "lower(alamat) like '%" + jTextField4.getText() + "%' ";
model.getRecDB(query);
if (model.getRowCount() > 0) {
jTable1.setRowSelectionInterval(0, 0);
}
jTable1.tableChanged(new javax.swing.event.TableModelEvent(model));
}

Spoiler for open Screenshot Pencarian Berdasarkan ComboBox:








26 Mei 2011

Menambahkan Fungsi Search Pada Aplikasi Java Desktop

Tutorial ini merupakan lanjutan dari artikel saya pada tahap 1 dan tahap 2 mengenai pembuatan aplikasi sederhana menggunakan java dan database oracle.

Pada tutorial kali ini kita tambahkan fungsi search yaitu pencarian suatu data yang ada didalam database sehingga yang ditampilkan pada tabel adalah isi data sesuai pencarian.




Untuk langkah awal, buatlah satu textfield dan satu button untuk pencarian. Seperti gambar desain berikut:
Spoiler for open Tampilan Dengan Tombol Search:

Kemudian pada sisi Design di Netbeans, double klik pada button Search tersebut atau klik kanan - Events - Action - actionPerformed

Kemudian isikan dengan code berikut:
TableModelMhs model = (TableModelMhs)jTable1.getModel();
String query=null;
query="lower(nama) like '%"+jTextField4.getText()+"%' ";
model.getRecDB(query);
if(model.getRowCount() > 0){jTable1.setRowSelectionInterval(0,0);}
jTable1.tableChanged(new javax.swing.event.TableModelEvent(model));

Pencarian tersebut hanya untuk pencarian nama saja. jTextField4 merupakan nama text field pencarian. jTable1 merupakan nama tabel yang akan menampilkan data.

Berikut screenshot jalannya program:
Spoiler for open Full data:

Spoiler for open Data Hasil Pencarian:

Jika ingin mengembalikan ke posisi awal yaitu pada posisi full data, perlu anda tambahkan tomboh refresh untuk menampilkan seluruh data. Kemudian berikan actionPerformed dengan cara double klik pada button Search tersebut atau klik kanan - Events - Action - actionPerformed dan isikan dengan code berikut:
jTable1.setModel(new TableModelMhs());

jTable1 merupakan nama tabel untuk menampilkan data, sedangkan TableModelMhs merupakan nama tabel model yang telah dibuat sesuai artikel tahap 2
Spoiler for open Tampilan dengan tombol refresh:

21 Apr 2011

Melihat Isi Data Di Dalam Suatu Directory atau Folder Menggunakan Java

Di Java tersedia fungsi File yang dapat di import melalui java.io.File. Nah dari fungsi tersebut, kita bisa melihat list data, baik folder maupun file yang ada di dalam sebuah directory.


Bagaimana source code dan penjelasannya dapat anda lihat dibagian bawah berikut.




Berikut java source code untuk melihat isi data di dalam suatu directory, baik data file maupun data folder/directory:
import java.io.File;

public class viewListDataInDirectory {
    public static void main(String[] args) {
        String dir = "D:/_M U D A F I Q";
        File f = new File(dir);

        String[] daftar = f.list();
        java.util.Arrays.sort(daftar);

        System.out.println("File dan direktori dalam D:\\_M U D A F I Q");
        System.out.println();

        for (int i = 0; i < daftar.length; i++) {
            File fTemp = new File(dir + "/" + daftar[i]);
            if (fTemp.isDirectory()) {
                System.out.println(daftar[i] + "\t\t<DIR>");
            } else {
                System.out.println(daftar[i]);
            }
        }
    }
}

Dan hasilnya dapat dilihat pada screenshot berikut:


Penjelasan:
  1. Di awal terdapat pendeklarasian alamat directory yang akan kita lihat isinya, diberi nama variable dir.
  2. Nama-nama file dibuatlah method list untuk me-list seluruh data yang ada dalam sebuah directory, yang kemudian file-file tersebut disimpan dalam sebuah array yang sekaligus di sort atau diurutkan sesuai secara ascending yaitu pengurutan dari abjad terkecil ke terbesar.
  3. Di dalam for terdapat pengecekan, jika file tersebut berupa directory (dicek menggunakan method isDirectory) maka akan diberi keterangan <DIR>, jika bukan berarti yang dimaksud adalah file dokumen.


13 Jan 2011

Memfilter Inputan Huruf Dan Diset Khusus Inputan Angka Pada JTextField Di Java Desktop

Misalkan kita membuat sebuah aplikasi desktop menggunakan java, dan pada kasusnya harus memberikan filter pada inputan pada textfield hanya bisa menginputkan angka, sehingga ketika menginputkan huruf dan karakter-karakter seperti (+ - * @ ! # $ %) dan lain-lain tidak diperbolehkan. Oleh karena itu kita harus memberikan filter pada inputan pada JTextField tersebut.

Oke langsung saja ke prakteknya wes....


baca selengkapnya: http://mudafiqriyan.com/2012/12/set-khusus-inputan-berupa-numerik-pada-text-field-di-java/

2 Jan 2011

Memposisikan JFrame Di Tengah Layar Monitor

Secara default, JFrame pada java saat di run akan berada pada pojok kiri atas. Dan itu membuat kurang nyaman. Bagaimana memposisikan JFrame aplikasi yang kita buat pada layar tengah?









Sebenarnya ada 2 cara untuk memposisikan JFrame di tengah layar:
1. Cara yang agak ribet nih... mungkin bagi yang belum tau fungsi yang sudah disediakan oleh Java, biasa menggunakan cara seperti ini:

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = this.getSize();

        if (frameSize.height > screenSize.height) {
            frameSize.height = screenSize.height;
        }

        if (frameSize.width > screenSize.width) {
            frameSize.width = screenSize.width;
        }

        this.setLocation( (screenSize.width - frameSize.width) / 3,
                     (screenSize.height - frameSize.height) / 3);
Yang diletakkan di constructor bersamaan dengan initComponents();



2. Cara sederhana dengan memanfaatkan fungsi yang sudah disediakan oleh Java. Tambahkan syntax berikut pada constructor JFrame yang dibuat:
setLocationRelativeTo(this);
Jika menggunakan fitur Netbeans drag-and-drop, biasanya syntax tersebut diletakkan bersamaan pada penempatan initComponents();

Java Print Table

Pada tutorial ini bagaimana memberikan fungsi print pada table yang ada pada jTable. Pada kasus yang saya terapkan pada artikel Membuat Aplikasi Java Sederhana Menggunakan Database Oracle. Pada contoh kasus itu menampilkan data mahasiswa. Dan kita bisa menambahkan fitur print data mahasiswa pada FormMahasiswa tersebut.

Bagaimana membuat fungsi print pada tabel yang sudah dapat menampilkan data dari database?




  1. Buatlah button dengan nama print pada frame dimana tabel data ditampilkan.
  2. Kemudian tambahkan import berikut:
    import java.awt.print.PrinterException;
    import java.text.MessageFormat;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.JTable.PrintMode;
  3. Berikan actionPerformed pada button print tersebut (double klik pada button atau klik kanan pada button print kemudian pilih Events - Actions - actionPerformed), kemudian isikan dengan syntax berikut:
    try {
    jTable1.print(PrintMode.FIT_WIDTH, new MessageFormat("DATA MAHASISWA"),null);
    } catch (PrinterException ex) {
    Logger.getLogger(FormMahasiswa.class.getName()).log(Level.SEVERE,null, ex);
    }
    
    MessageFormat merupakan method yang berfungsi memberi nama pada judul dokumen print. FormMahasiswa merupakan form tempat menampilkan data di tabel.
  4. Dan kita bisa print data yang ditampilkan oleh jTable. 
  5. Selamat mencoba dan sukses.

Membuat Aplikasi Java Sederhana Menggunakan Database Oracle (Tahap 2)

Setelah mencoba tahap 1, kita coba untuk membuat aplikasi untuk CRUD (Create, Read, Update, Delete) pada data di Oracle.

Kita mencoba untuk membuat aplikasi tersebut bisa select, insert, update delete dengan sederhana. Mulai dari menampilkan data di tabel java, sampai memberi fungsi CRUD di dalamnya.







Langsung aja deh gak usah banyak cingcong ^_^
  1. Buatlah New - Java Class, kemudian beri nama TableModelMhs. Berikut source codenya:
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Vector;
    import javax.swing.table.AbstractTableModel;
    
    public class TableModelMhs extends AbstractTableModel {
    //daftar judul-judul kolom tabel
    
    private String kolom[] = {"Nim", "Nama", "Alamat"};
    // definisi variabel Vector untuk menyimpan data dari database
    private Vector baris = new Vector();
    // set koneksi ke database
    // objek Connection kita ambil dari objek Login yang telah
    // dibuat di class FormLogin
    // Mengapa dapat kita akses? karena objek Login kita definisikan 
    // sebagai public static
    private Connection conn = LoginForm.myLgn.getConnDB();
    
    public TableModelMhs() {
    getRecDB(null);
    }
    
    public void finalize() {
    baris = null;
    conn = null;
    }
    
    // method ini berfungsi melakukan query ke database server
    // dan menampung hasilnya (dari ResultSet) ke masing-masing Vector    
    public void getRecDB(String kondisi) {
    String query;
    
    // persiapkan perintah SQL yang akan dijalankan di database server
    query = "SELECT * FROM mahasiswa";
    if (kondisi != null) {
    query = query + " WHERE " + kondisi;
    }
    query = query + " ORDER BY nim asc";
    
    try {
    // buat objek Statement dari Connection
    //  agar dapat mengeksekusi query
    Statement statement = conn.createStatement();
    ResultSet resultSet = statement.executeQuery(query);
    
    // kosongkan semua Vector
    baris.removeAllElements();
    
    // jika ada record yang diberikan dari database server
    // baca record demi record sampai selesai
    while (resultSet.next()) {
    // simpan ke dalam array masing-masing field
    //berhubung pada tabel mahasiswa ini hanya terdapat 3 kolom (nim, nama, alamat) maka dideklarasikan 3 object yang disimpan dalam array
    Object[] r = {resultSet.getString(1), resultSet.getString(2), resultSet.getString(3)};
    // tambahkan ke Vector
    baris.addElement(r);
    
    //beri nilai null untuk mencega garbage
    r = null;
    }
    } catch (java.sql.SQLException e) {
    System.out.println("Error : " + e);
    }
    query = null;
    }
    
    public int getColumnCount() {
    return kolom.length;
    }
    
    public int getRowCount() {
    return baris.size();
    }
    
    public Object getValueAt(int rowIndex, int columnIndex) {
    if (!baris.isEmpty()) {
    Object r[] = (Object[]) baris.elementAt(rowIndex);
    return r[columnIndex];
    } else {
    return null;
    }
    }
    
    public String getColumnName(int columnIndex) {
    return kolom[columnIndex];
    }
    
    // method untuk mengubah nilai pada sel Tabel
    public void setValueAt(Object aValue, int row, int column) {
    Object[] r = (Object[]) baris.elementAt(row);
    r[column] = aValue;
    baris.setElementAt(r, row);
    fireTableCellUpdated(row, column);
    }
    
    public boolean isCellEditable(int row, int column) {
    return false;
    }
    }
  2. Kemudian buatlah New - JFrame Form untuk membuat tampilannya - beri nama misalkan FormMahasiswa. Pasangkan tabel pada form ini (Palette - Swing Control - Table). Misalkan tampilan formnya adalah seperti gambar berikut:
  3. Klik kanan pada jTable - Properties - pilih pada model - pada pilihan drop down (set jTable1's model property using) pilih Costum code - isikan dengan new TableModelMhs() - Kemudian tekan OK - Close window properties. Yang dipanggil adalah class TableModel yang telah dibuat di atas.
  4. Kemudian pada menu utama, link-kan menu data mahasiswa pada FormMahasiswa yang telah dibuat diatas.
  5. Caranya double klik pada button data mahasiswa, atau klik kanan pada button data mahasiswa kemudian pilih Events - Actions - actionPerformed, isikan dengan syntax berikut:
    new FormMahasiswa().setVisible(true);//memanggil jendela FormMahasiswa
    this.setVisible(false);//menutup jendela dari class itu sendiri
    Memanggil class FormMahasiswa yang kemudian di tampilkan dengan perintah setVisible(true).
  6. Pada button Exit, lakukan hal yang sama seperti perintah 5 (double klik pada button Exit) kemudian isikan code berikut untuk mematikan proses/exit proses:
    System.exit(0);
  7. Cobalah untuk menjalankan program, Run LoginForm kemudian login sesuai user dan password pada oracle anda.
  8. Pilih menu Data Mahasiswa, maka data dari oracle anda akan ditampilkan pada jTable
  9. Jika ingin memberi fungsi pada tombol Back, beri actionPerformed dan tambahin script berikut:
    this.setVisible(false); //untuk menutup jendela dari class itu sendiri yaitu FormMahasiswa
    new MenuForm().setVisible(true);//kemudian menampilkan menu utama 


Setelah data berhasil ditampilkan, kita berikan fungsi CRUD:
  1. Pada Class FormMahasiswa tersebut, tambahkan import berikut:
    import java.sql.SQLException;
    import java.sql.Statement;
    import javax.swing.JOptionPane;
  2. Berikan actionPerformed pada tombol insert, dan tambahkan syntax berikut:
    koneksiOracle co = new koneksiOracle(); //membuat object dari class koneksiOracle
    Statement st = co.sambung();
    int a=0;
    try {
    String nim =jTextField1.getText(); //textfield nim
    String nama =jTextField2.getText(); //textfield nama
    String alamat =jTextField3.getText();//textfield alamat
    
    
    String sql = "insert into mahasiswa values('" +nim+ "', '"+nama+"','"+alamat+"')";
    
    try {
    a =st.executeUpdate(sql);
    } catch (Exception se) {
    se.printStackTrace();
    }
    if(a==0){
    JOptionPane.showMessageDialog(null, "DATA GAGAL DISIMPAN \n Silahkan Coba Lagi");
    }
    else{
    JOptionPane.showMessageDialog(null, "DATA TERSIMPAN");
    //mengosongkan textfield jika data telah tersimpan
    jTextField1.setText("");
    jTextField2.setText("");
    jTextField3.setText("");
    jTable1.setModel(new TableModelMhs());
    }
    
    } catch (Exception se) {}
  3. Pada actionPerformed Update:
    koneksiOracle co = new koneksiOracle();
    Statement st = co.sambung();
    int a = 0;
    try {
    String nim = jTextField1.getText();
    String nama = jTextField2.getText();
    String alamat = jTextField3.getText();
    String sql = "update mahasiswa set nim='" + nim + "', nama='" + nama + "', alamat='" + alamat + "'";
    
    
    try {
    a = st.executeUpdate(sql);
    } catch (Exception se) {
    se.printStackTrace();
    }
    if (a == 0) {
    JOptionPane.showMessageDialog(null, "DATA GAGAL DIUBAH \n Silahkan Coba Lagi");
    } else {
    JOptionPane.showMessageDialog(null, "DATA TELAH DIUBAH");
    jTable1.setModel(new TableModelMhs());
    }
    } catch (Exception se) {
    }
  4. Pada actionPerformed Delete:
    koneksiOracle co = new koneksiOracle();
    Statement st = co.sambung();
    
    String nim = jTextField1.getText();
    String sql = "delete from mahasiswa where nim='" + nim + "'";
    int proses = 0;
    try {
    proses = st.executeUpdate(sql);
    } catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    if (proses != 1) {
    JOptionPane.showMessageDialog(null, "DATA GAGAL DIHAPUS \n Ulangi Sekali Lagi");
    } else {
    JOptionPane.showMessageDialog(null, "DATA BERHASIL DIHAPUS");
    jTextField1.setText("");
    jTable1.setModel(new TableModelMhs());
    }
  5. Silahkan di coba insert data baru, update berdasarkan nim yang dipanggil di textfield nim, dan delete berdasarkan nim yang dipanggil di textfield nim. 
Semoga sukses!!!

1 Jan 2011

Membuat Aplikasi Java Sederhana Menggunakan Database Oracle (Tahap 1)

Tujuan dari tutorial ini adalah untuk membuat aplikasi Java yang terkoneksi dengan database Oracle. Pada tahap 1 ini saya akan menerangkan mengenai bagaimana membuat form login untuk user di Oracle. Saya terangkan dari tiap langkahnya membuat project sampai berhasil login user Oracle melalui aplikasi Java. Sebelum mencoba tutorial ini, alangkah baiknya jika memahami tutorial saya tentang koneksi Java dan Oracle.






Langsung saja ikuti step by step berikut:
  1. Buatlah new project di Netbeans (New Project - Java - Java Application). Kemudian beri nama project tersebut.
  2. Tambahkan library ojdbc.jar yang ada di directory oracle C:\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib
  3. Pada project baru yang telah dibuat tersebut, buatlah Class baru (New - Java Class) dan beri nama koneksiOracle. Kemudian berikut isi source code koneksi dengan oracle.
    import java.sql.*;
    
    public class koneksiOracle {
    
    String db = "jdbc:oracle:thin:@localhost:1521:XE";
    String user = "mhs"; //ini user oracle
    String pass = "taurus"; //password oracle
    Statement stm = null;
    Connection co = null;
    
    public koneksiOracle() {
    }
    
    public Statement sambung() { //method utk memanggil driver oracle
    
    try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    } catch (ClassNotFoundException e) {
    
    e.printStackTrace();
    }
    
    try {
    co = DriverManager.getConnection(db, user, pass);
    } catch (SQLException e) {
    
    e.printStackTrace();
    }
    
    try {
    stm = co.createStatement();
    } catch (SQLException e) {
    
    e.printStackTrace();
    }
    
    return stm;
    }
    }
  4. Buatlah class untuk action dari aplikasi login dengan nama class LoginAction.
    public class LoginAction {
    
    private String username;
    private String password;
    private String koneksi = "localhost";
    private boolean isOK = false;
    private String cURLDB;
    private java.sql.Connection conn;
    
    /** Creates a new instance of Login */
    public LoginAction() {
    this.username = "";
    this.password = "";
    }
    
    public LoginAction(java.lang.String cUser, java.lang.String passwd) {
    this.username = cUser;
    this.password = passwd;
    }
    
    @Override
    protected void finalize() {
    conn = null;
    }
    
    public String getUsername() {
    return this.username = "";
    }
    
    public String getPassword() {
    return this.password = "";
    }
    
    public boolean cekLogin() {
    try {
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    } catch (java.lang.ClassNotFoundException cnfe) {
    System.out.println("Error loading driver: " + cnfe);
    } catch (java.lang.InstantiationException e) {
    System.out.println("Error loading driver: " + e);
    } catch (java.lang.IllegalAccessException e) {
    System.out.println("Error loading driver: " + e);
    }
    
    String server = "127.0.0.1";
    String port = "1521";
    String sid = "XE";
    String url = "jdbc:oracle:thin:@" + server + ":" + port + ":" + sid;
    try {
    conn = java.sql.DriverManager.getConnection(url, username, password);
    conn.setAutoCommit(true);
    isOK = true;
    cURLDB = url;
    } catch (Exception e) {
    System.out.println(e);
    isOK = false;
    }
    return isOK;
    }
    
    public void closeConnDB() {
    try {
    conn.close();
    } catch (Exception e) {
    System.out.println("Tidak dapat menutup koneksi database!" + e);
    }
    conn = null;
    }
    
    public java.sql.Connection getConnDB() {
    return this.conn;
    }
    
    public boolean getIsOK() {
    return this.isOK;
    }
    }
  5. Buatlah form untuk frame login (New - JFrame Form) dan beri nama LoginForm. Seperti tampilan login berikut.
    Ingat bahwa field untuk password gunakan komponen Password Field yang ada di Palette. Dan untuk username gunakan Text Field.
  6. Pada button OK, klik kanan - Events - Actions - actionPerformed atau langsung double klik pada button OK. Kemudian tambahkan code berikut:
    String pass = new String(jPasswordField1.getPassword());
    myLgn = new LoginAction(jTextField1.getText(), pass);
    
    
    if (myLgn.cekLogin()) {
    setVisible(false);
    JOptionPane.showMessageDialog(this,"Connection Succes",
    "Welcome",JOptionPane.INFORMATION_MESSAGE);
    new MenuForm().setVisible(true);
    } else {
    
    JOptionPane.showMessageDialog(null,
    "Login Anda tidak diterima server.\n" +
    "Silahkan di periksa ulang!", "Konfirmasi...",
    javax.swing.JOptionPane.ERROR_MESSAGE);
    }
  7. Kemudian tambahkan code yang bercetak tebal berikut pada code LoginForm tersebut:
    import javax.swing.JOptionPane; 
    
    public class LoginForm extends javax.swing.JFrame {
    
    public static LoginAction myLgn; 
    
    /** Creates new form LoginForm */
    public LoginForm() {
    initComponents();
    }
  8. Buatlah form untuk menu utama (New - JFrame Form - beri nama MenuForm), dimisalkan setelah login berhasil maka form yang akan dipanggil adalah menu utama tersebut. Misal menu utamanya tampilannya seperti ini:
  9. Pada class main dari MenuForm tersebut, silahkan di hilangkan atau diberi tanda comment seperti ini agar tidak menggangu saat running project.
    //    public static void main(String args[]) {
    //        java.awt.EventQueue.invokeLater(new Runnable() {
    //            public void run() {
    //                new MenuForm().setVisible(true);
    //            }
    //        });
    //    }
  10. Kita coba apakah berhasil login atau tidak. Run Project.
    Masukkan username dan password dari user di Oracle anda.

    Konfirmasi bahwa koneksi berhasil.

    Maka akan masuk pada form menu utama:

17 Des 2010

Synthetica Look And Feel - Mengubah Motif Java Swing Menggunakan Library 'SyntheticaBlueMoonLookAndFeel'

Look and Feel adalah motif atau theme yang disediakan java untuk tampilan aplikasi java desktop.

Pada dasarnya, java sudah menyediakan 5 macam look and feel secara default yaitu: Motif, Metal, Windows, Classic, Nimbus. Akan tetapi kita bisa menambahkan library untuk look and feel. Seperti library SyntheticaBlueMoonLookAndFeel.

Pada artikel kali ini, kita coba untuk membuat tampilan java desktop menggunakan library SyntheticaBlueMoonLookAndFeel.


Lihatlah tampilan java desktop berikut:










Kita coba untuk membuat tampilan java seperti di atas. Tampilan di atas menggunakan motif SyntheticaBlueMoonLookAndFeel dengan tambahan library.

Oke langsung saja:

  1. Buatlah project Java Application (disini saya memberi nama project: SyntheticaBlueMoon)
  2. Buatlah New - JFrame Form (disini saya memberi nama Frame: FrameSyntheticaBlueMoon)
  3. Kemudian tambahkan import paket yang dibutuhkan:
    import de.javasoft.plaf.synthetica.SyntheticaBlueMoonLookAndFeel;
    import javax.swing.UIManager;
  4.  Buatlah method berikut:
    public static void initializeLookAndFeel() {
            try {
                UIManager.setLookAndFeel(new SyntheticaBlueMoonLookAndFeel());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    Untuk pemanggilan object new SyntheticaBlueMoonLookAndFeel() merupakan memanggil method dari SyntheticaBlueMoonLookAndFeel.
  5.  Pada fungsi main ubahlah seperti berikut:
    public static void main(String args[]) {
            initializeLookAndFeel();
            FrameSyntheticaBlueMoon index = new FrameSyntheticaBlueMoon();
    
            index.setVisible(true);
        }

Screenshot synthetica look and feel: http://www.javasoft.de/synthetica/screenshots/
Download Library SyntheticaBlueMoon
Download Contoh ProjectSyntheticaBlueMoon 

4 Des 2010

Membuat Aplikasi Converter Suhu Dengan Memanfaatkan CORBA Pada Java

CORBA (Common Object Request Broker Architecture) adalah sebuah arsitektur software yang berbasis pada teknologi berorientasi obyek atau Object Oriented (OO) dengan paradigma client-server. CORBA dapat digunakan untuk pengembangan software dengan berbasis pada rekayasa berkomponen.


CORBA lahir berdasarkan 'kesepakatan' antara sejumlah vendor dan pengembang perangkat lunak terkenal seperti IBM, Hewlett-Packard, dan DEC, yang tergabung dalam sebuah konsorsium bernama OMG (Object Management Group).

Konsep Object-Oriented (OO) melahirkan paradigma client-server yang mana pada sebuah obyek berkomunikasi dengan obyek lain dengan cara pengiriman pesan (message passing). Konteks komunikasi ini kemudian dipetakan ke dalam model client-server: satu obyek berperan sebagai client (si pengirim pesan) dan yang lain bertindak sebagai server (yang menerima pesan dan memproses pesan yang bersangkutan).


Dengan menerapkan konsep Object-Oriented ataupun Client-Server, kita akan mencoba untuk membuat sebuah aplikasi sederhana yaitu Membuat Aplikasi Converter Suhu Menggunakan Komponen CORBA, yang mana komponen CORBA telah disediakan oleh Java.

Download Tulisan Lengkap: Mudafiq-ConverterSuhuCORBA.pdf
Download Project: ConverterCORBA.zip