Tampilan Date yang Aneh di JTable


Java Programming

Java Programming

Peralatan yang diperlukan :

  1. Java Development Kit 1.6
  2. Integrated Development Environtment (NetBeans, Eclipse, dll)

Tadi pagi ada yang bertanya kenapa format tampilan Date (tanggal) di JTable aneh, tampilannya “Wed Jun 02 14:26:53 ICT 2010”. Yup memang seperti itulah default tampilan dari Date (java.util.Date), kok seperti itu? Ini dikarenakan Date bukanlah String, sehingga tidak dapat langsung ditampilkan oleh JTable, lantas kenapa bisa tampil tulisan “Wed Jun 02 14:26:53 ICT 2010” ? Hal ini dikarenakan itu dipanggil dari metode toString() milik kelas Object.

Tampilan Date di JTable

Tampilan Date di JTable

Jadi class apapun yang selain String, maka JTable akan menampilkannya sesuai dengan String hasil dari metode toString() nya. Jadi jika akan menampilkan format tanggal yang dapat dimengerti oleh user, kita harus membuatnya secara manual. Salah satu caranya adalah dengan cara menggunakan TableCellRenderer.

package khannedy.standard;

import java.awt.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class TableCellRenderDate extends DefaultTableCellRenderer {

    private static final long serialVersionUID = 1L;
    private SimpleDateFormat format;

    public TableCellRenderDate() {
        format = new SimpleDateFormat("dd MMMM yyyy");
    }

    @Override
    public Component getTableCellRendererComponent(JTable table,
        Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        JLabel label = (JLabel) super.getTableCellRendererComponent(table,
                                         value, isSelected, hasFocus, row, column);

        if (value != null && value instanceof Date) {
            Date date = (Date) value;
            String text = format.format(date);
            label.setText(text);
        }

        return label;
    }
}

Setelah itu tambahkan ke JTable yang akan kita gunakan.

tableMahasiswa.getColumnModel().getColumn(2).setCellRenderer(new TableCellRenderDate());
Tampilan Date di JTable Setelah Menggunakan TableCellRendererDate

Tampilan Date di JTable Setelah Menggunakan TableCellRendererDate

Untuk merubah tampilan format tanggalnya, Anda hanya perlu mengubah parameter SimpleDateFormat, misal jika parameternya “dd/MM/yyyy”, maka hasilnya 29/12/1988. Untuk lebih lanjut tentang SimpleDateFormat, anda bisa membaca Javadocnya 😀

enjoy 😀

Iklan

2 pemikiran pada “Tampilan Date yang Aneh di JTable

  1. Koq ga berhasil y? Ga error tapi juga ga ada perubahan.
    Object date yang di class TableCellRenderDate juga udah aku coba pake java.sql.Date (karena aku pikir ni data aku ambil dari SQL) tapi sama aja ga bisa.
    Atau karena class tersebut aku jadiin nested? Masak ngaruh sih???

  2. kalo yang di overide nya method setValue(Object value) pakai ini….

    public class FormatRenderer extends DefaultTableCellRenderer {

    private Format formatter;

    public FormatRenderer(Format formatter) {
    this.formatter = formatter;
    }

    @Override
    public void setValue(Object value) {//value akan di format terlebih dahulu sebelum di set ke table

    try {
    if (value != null) {
    value = formatter.format(value);
    }

    } catch (IllegalArgumentException e) {
    }

    super.setValue(value);
    }

    /*
    * Use the default date/time formatter for the default locale
    */
    public static FormatRenderer getDateTimeRenderer() {
    return new FormatRenderer(DateFormat.getDateTimeInstance());
    }

    /*
    * Use the default time formatter for the default locale
    */
    public static FormatRenderer getTimeRenderer() {
    return new FormatRenderer(DateFormat.getDateInstance());
    }

    public static FormatRenderer getDateRender() {
    return new FormatRenderer(new SimpleDateFormat(“MMM dd,yyyy”));
    }
    }

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