mengubah warna background jtable agar warna-warni


image kebanyakan orang sebel ama JTable πŸ˜€

katanya sich lebih sulit dari pada DataGrid milik VB ato miliknya Delphi πŸ˜›

tapi menurut gw gak seperti itu, justru lebih enak pake JTable milinya Java πŸ˜€ ?

ok, langsung 2 the point aja! sekarang gw lagi iseng bikin tutorial buat bikin jtable yang warna backgroundnya bisa warna-warni tapi supaya gak banyak IF, jadi gw bikin 2 warna aja :D, jadi khasusnya “bagaimana membuat table yang warna backgroundnya berbeda2 alias selang seling ganjil dan genap ?”

saya jelasnya sedikit tentang, bagai mana sebuah jtable menampilkan datanya πŸ˜€

sebenarnya jtable tak dapat menampilkan data dan menampung data, why? karena emang jtable itu merupakan kompunen yang bertugas sebagai kontainer alias pemersatu antara model, view dan controller πŸ˜€

dan dalam jtable yang berpesan sebagai model adalah TableModel dan yang berperan sebagai View adalah TableCellRenderer dan yang berperan sebagai controller adalah TableCellEditor πŸ˜€

nach karena kita sekarang mo memanipulasi tampilan jtable, maka kita fokuskan dalam TableCellRenderer πŸ˜€

dan untuk membuat table dengan tujuan tadi, kita buat dulu class “RenderWarnaWarni” πŸ˜€

/*
 *  copyright 2008 echo.khannedy@gmail.com
 */
package org.echo.test.widget.render;

import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

/**
 *
 * @author echo
 */
public class RenderWarnaWarni extends DefaultTableCellRenderer {

    private static final long serialVersionUID = 47612794125L;

    // warna background untuk baris ganjil
    private Color ganjil;

    // warna background untuk baris genap
    private Color genap;

    /**
     * membuat RenderWarnaWarni baru dengan menantukan warna
     * backgroundnya
     * @param ganjil warna ganjil
     * @param genap warna genap
     */
    public RenderWarnaWarni(Color ganjil, Color genap) {
        this.ganjil = ganjil;
        this.genap = genap;
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        // mendapatkan component superclass
        Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

        // cek ganjil ato genap
        if (row % 2 == 1) {
            // ganjil
            component.setBackground(ganjil);
        } else {
            // genap
            component.setBackground(genap);
        }

        // mengembalikan komponen
        return component;
    }
}

sekarang kita pasangkan render tersebut ke JTable dengan cara :

table.setDefaultRenderer(Object.class, new RenderWarnaWarni(Color.BLUE, Color.RED));

nah untuk “table” adalah nama variabel jtablenya dan untuk parameter konstruktor RenderWarnaWarni itu terserah anda :D, contohnya saya pake BLUE dan RED, jadi hasilnya kayak gini :

 jtable

enjoy πŸ˜€

Iklan

17 pemikiran pada “mengubah warna background jtable agar warna-warni

  1. Ping balik: Belajar JaVa « WAHYU FIGHTER

  2. Ping balik: Tutorial Java dari Eko Kurniawan Khannedy « nge-WP@net

  3. Sama nih pertanyaanya…”klo biar data dtable dclick lgsg muncul di form gmn caranya?
    y kaya model pop up deh..”??
    bagaimana ya caranya…hehehe..
    maklum masih pemula…

  4. Permisi,,
    mw nanya nih,,,
    kalau sya kasusnya ingin membuat row itu berwarna beda hanya untuk baris dengan kriteria tertentu saja. Tabel ini saya hubungkan dgn salah satu tabel di database. terus pada database tsb ada field yang menjelaskan kategori dari tiap tuple dan field itu. Jadi tiap2 tuple itu dapat dikelompokan dgn isi dr field itu. Yang saya inginkan, warna row pada JTable diatur sesuai kategori yang ada di field tadi. Katakanlah di field tersebut ada 3 kategori yaitu Mahasiswa, Dosen, dan Pengunjung. Bagaimana yah implementasi codingnya??

    Mohon bantuannya..

    Terima Kasih sebelumnya…

  5. Oia,,, bagaimana yah caranya biar beberapa cell tertentu tidak bisa diedit tapi ini ada di Tabel yang dinamis dimana row akan bertambah di tempat manapun, bisa diawal, ditengah atau diakhir row yang sudah ada…

    Sekali lagi, terima kasih banyak

  6. sedikit mau sharing nih .., masih mengenai warna-mewarnai JTable. misal kita punya JTable
    ada value “cancel” contoh di kolom yang pertama. gimana biar yang valuenya “cancel” aja yang rownya berwarna. nih source codenya:

    buat dulu class yang mengextends DefaultTableCellRenderer sama aja si sama tutorial diatas, langsung aja dah…

    public class TabelCellRenderer extends DefaultTableCellRenderer{

    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int column) {
    Component comp=super.getTableCellRendererComponent(table, value, isSelected, isSelected, row, column);
    Object objek=table.getModel().getValueAt(row,0);
    if(objek.equals(“cancel”)){
    comp.setBackground(Color.red);
    }
    else{
    comp.setBackground(null);
    }return comp;
    }
    }

    nah habis itu panggil dh class tsb:

    for(int i=0;i<tabelnya.getColumnModel().getColumnCount();i++){
    tabelnya.getColumnModel().getColumn(i).setCellRenderer(new TabelCellRenderer());
    }

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s