Astawan’s World

Icon

Just To Remember Something That I Ever Know

Binding Data Pada jTable

Menggunakan VB atau C# dengan DataGrid-nya, seorang pemula tidak akan kesulitan untuk menampilkan data kedalam DataGrid, karena tinggal set property DataSource-nya saja, maka data akan ditampilkan, tetapi akan sangat berbeda jika menggunakan Java yang menyediakan jTable sebagai komponen penyaji data, karena sebelumnya kita harus tahu bagaimana konsep untuk menampilkan data kedalam jTable. Berikut adalah step-step yang bisa dilakukan untuk binding data ke jTable.

void bindTable(){
//step 1, deklarasi variable bertipe Vector
//mengapa Vertor dan bukan Array? karena vector fleksible, Array statis.
//---------------------------------------------------------
Vector cn = new Vector(); // variable untuk nama kolom
Vector row;// variable untuk satu baris data
Vector allRow = new Vector();// variable untuk semua baris data

//step 2, Memasukan nama-nama kolom kedalam objek cn
//---------------------------------------------------------
cn.addElement("NIM");
cn.addElement("Nama");
cn.addElement("IPK");

//step 3, masukan data-data
//---------------------------------------------------------
// masukan data kedua
row = new Vector();
row.addElement("980023");
row.addElement("Ketut Widi Astawan");
row.addElement(3.00);
allRow.addElement(row);

// masukan data kedua
row = new Vector();
row.addElement("980028");
row.addElement("Bayu Yulianto");
row.addElement(3.23);
allRow.addElement(row);

// masuka data ketiga
row = new Vector();
row.addElement("980017");
row.addElement("Sugeng Cahyono");
row.addElement(2.90);
allRow.addElement(row);

//step 4, buat objek tablemodel untuk model tabel
//---------------------------------------------------------
TableModel model =  new DefaultTableModel(allRow , cn);
// set model jtable
jTable1.setModel(model);

//step 5, modifikasi kolom jtable (jika diperlukan)
//---------------------------------------------------------
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
TableColumnModel tm = jTable1.getColumnModel(); // ambil kolom2 ke TableColumnModel

//modifikasi kolom NIM
renderer.setHorizontalAlignment(JLabel.CENTER); // modifikasi aligment
renderer.setBackground(Color.GREEN);
TableColumn tc = tm.getColumn(0); //
tc.setPreferredWidth(5);
tc.setCellRenderer(renderer);

//modifikasi kolom IPK
renderer = new DefaultTableCellRenderer();
renderer.setHorizontalAlignment(JLabel.RIGHT); // modifikasi aligment
renderer.setBackground(Color.GRAY);
tc = tm.getColumn(2); //
tc.setCellRenderer(renderer);
tc.setPreferredWidth(5);
}

Jika data-data adalah hasil dari eksekusi query, maka kita tinggal mengganti step3 dengan looping record pada ResultSet.

Contoh :

.....
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
row = new Vector();
row.addElement(rs.getObject("NIS"));
row.addElement(rs.getObject("nama"));
row.addElement(rs.getObject("IPK"));
allRow.addElement(row);
}

Filed under: Java

Membaca Angka Yang Sudah diformat Dengan Pada Java

angka 65000000, kalau diformat ke format German menjadi, 65.000.000,00. Nah … untuk membaca kembali angka yang telah diformat tersebut kita tidak bisa langsung membaca dan menampung kedalam variable (double, decimal, dll), karena akan terjadi error (kecuali mungkin kalau setting regional di OS adalah German/Indonesia).

Cara untuk membaca angka tersebut kembali adalah:

        NumberFormat nf1 =  NumberFormat.getInstance(Locale.GERMAN);
        Object nilai = null;
        try{
             nilai = nf1.parse("65.000.000,00");
        }catch(Exception ex){
            ex.getMessage();
        }

Filed under: Java

Memformat Angka di Java

Contoh penggalan program untuk memformat tampilan angka, selain dibawah masih banyak jenis cara yang dapat dilakukan untuk memformat angka.

Class yang perlu diimport :

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.util.Locale;
    void formatNumber(){
        double harga =6500000;
        // jenis pertama
        String strFormat0 ="####";
        DecimalFormat df = new DecimalFormat(strFormat0);
        System.out.println(df.format(harga));
        //output 6500000

        // jenis pertama
        String strFormat1 ="####.00";
        DecimalFormat df2 = new DecimalFormat(strFormat1);
        System.out.println(df2.format(harga));
        //output 6500000.00

        // jenis pertama
        String strFormat2 ="#,###.00";
        DecimalFormat df3 = new DecimalFormat(strFormat2);
        System.out.println(df3.format(harga));
        //output 6,500,000.00

        // jenis pertama
        String strFormat3 ="#,###.00";
        DecimalFormat df4 = new DecimalFormat(strFormat3,
                            new DecimalFormatSymbols(Locale.GERMAN));
        System.out.println(df4.format(harga));
        //output 6.500.000,00
    }

Filed under: Java

Split string dengan Java

Berikut ini adalah contoh memecah string menggunakan java, contoh ini bukan kreasi saya tapi saya copy dari www.rgagnon.com.

public class StringSplit {
  public static void main(String args[]) throws Exception{
      new StringSplit().doit();
  }

  public void doit() {
      String s3 = "Real-How-To";
      String [] temp = null;
      temp = s3.split("-");
      dump(temp);
  }

  public void dump(String []s) {
    System.out.println("------------");
    for (int i = 0 ; i < s.length ; i++) {
        System.out.println(s[i]);
    }
    System.out.println("------------");
  }
}

/*
output :
------------
Real
How
To
------------
*/</pre>

Untuk delimeter yang menggunakan karakter khusus, silahkan baca lebih lanjut di http://www.rgagnon.com/javadetails/java-0438.html

Filed under: Java

Sulitnya Binding Data ke JTable adalah Salah Satu Kelemahan Java

Biasanya dalam membuat aplikasi menggunakan VB 6 atau VB .Net, komponen yang sangat penting dan paling sering saya gunakan untuk menampilkan data adalah DataGrid untuk VB 6 dan DataGridView untuk VB 2005. Dengan komponen tersebut kita dengan mudah merepresentasikan data untuk laporan ataupun untuk lainnya, tinggal Set [datagrid].datasource=[recordset] untuk VB 6 dan [datagrid].datasource = [dataTable/dataview/dl] untuk VB 2005.

Karena tertarik dengan program java saya coba membuat aplikasi menggunakan java 5 SE (sekarang dah tak upgrade ke java 6) , dengan menggunakan editor Netbeans 5.5 (sekarang versi 6) untuk membuat aplikasi berbasis desktop. Menariknya dijava menurut saya adalah Multi Platform nya dan kekuatan di skala Enterprisenya, juga dukungan komunitas (JUG) yang sangat aktif.

Dengan editor Netbean saya mencoba membuat aplikasi berbasis Swing, permasalahan mulai saya temukan ketika hendak menampilkan data dalam bentuk grid yaitu dengan menggunakan JTable, ternyata penggunaannya bertele-tele, kita harus membuat TableModel kemudian looping resultSet baru kemudian set ke JTablenya. JTable juga kurang flexible, pengaturan properties kolom cukup sulit.

Dengan kasus tersebut saya berfikir ini adalah salah satu kelemahan Java di aplikasi desktop (IMHO), atau mungkin saya yang terlalu terbiasa dengan sintak VB. Tapi seharusnya menurut saya binding data ke JTable harus dibuat mudah, VB aja bisa kenapa Java nggak bisa, ini merupakan PR untuk Sun dalam mengembangkan java khususnya komponen Swing untuk Aplikasi Desktopnya.

 

Filed under: Java