Cara Merubah CellRenderer JTable pada Java Netbeans

Cara Merubah Cellrenderer JTable - Tutorial java kali ini kita akan membahas apa itu TableCellRenderer dan bagaimana menerapkannya pada java programming kita. TableCellRenderer adalah sebuah class java yang berfungsi untuk merender cell (kolom) pada JTable sehingga kita dapat menentukan atau merubah format data dan komponen yang akan dimunculkan. Komponen yang dirender JTable secara default berupa JLabel sehingga kita hanya mengatur text yang akan ditampilkan oleh JTable.

Untuk contoh cara merubah cellrenderer jtable yang akan kita bahas sekarang adalah merubah format mata uang (currency) menjadi format rupiah (Rp. ) dan merubah format Date JTable (tanggal pada JTable) menjadi "dd MMMM yyyy".

Berikut tampilan awal program java yang akan kita CellRenderer-nya.


Baca Juga : Tutorial Cara Membuat JFrame di Java Netbeans

Cara Merubah Format Mata Uang (Currency) pada JTable

TableCellRenderer dapat kita gunakan untuk merubah format cell (kolom) menjadi rupiah (Rp.). Berikut contoh program cara merubah format mata uang rupiah pada JTable menggunakan TableCellRenderer.

Buatlah sebuah class java dengan nama RupiahCellRenderer

Berikut source code untuk TableCellRenderer format rupiah :

import java.awt.Component;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

/**
 *
 * @author Akira
 */
public class RupiahCellRenderer extends DefaultTableCellRenderer {
 
    private DecimalFormat desimalFormat;

    public RupiahCellRenderer() {
        DecimalFormatSymbols symbols = new DecimalFormatSymbols(new Locale("id"));
        symbols.setCurrencySymbol("Rp. ");
        desimalFormat = new DecimalFormat("\u00A4##,###.##", symbols);
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, 
            boolean isSelected, boolean hasFocus, int row, int column) {
        
        JLabel component = (JLabel) super.getTableCellRendererComponent(table, value, 
                isSelected, hasFocus, row, column);
        component.setHorizontalAlignment(JLabel.RIGHT);
        component.setText(desimalFormat.format(value));

        return component;
    }
}

Baca Juga : Cara Membuat Sorting JTable pada Java Netbeans

Contoh Merubah Format Date (Tanggal) pada CellRenderer JTable

TableCellRenderer juga dapat kita gunakan untuk merubah format tanggal (Date) JTable. Untuk merubah format tanggal JTable, buatlah sebuah class java dengan nama TanggalCellRenderer.

Berikut souce code untuk TableCellRenderer untuk merubah format tanggal JTable :

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

/**
 *
 * @author Akira
 */
public class TanggalCellRenderer extends DefaultTableCellRenderer{

    private SimpleDateFormat df = new SimpleDateFormat("dd MMMM yyyy");
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, 
            boolean isSelected, boolean hasFocus, int row, int column) {
        
        JLabel text = (JLabel) super.getTableCellRendererComponent(table, value, 
                isSelected, hasFocus, row, column);
        text.setHorizontalAlignment(JLabel.CENTER);
        text.setText(df.format(value));
        return  text;
    }
    
}

Setelah kalian membuat class java RupiahCellRenderer dan TanggalCellRenderer, berikut ini source code untuk membuat tampilan (user interface) JTable.

import de.javasoft.plaf.synthetica.SyntheticaBlueLightLookAndFeel;
import java.sql.Date;
import java.text.ParseException;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Akira
 */
public class ContohCellRenderer extends JFrame {
    private JTable tabel;
    private DefaultTableModel model;
    
    public ContohCellRenderer(){
        setTitle("Contoh CellRenderer");
        setSize(500, 200);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        userInterface();
        setVisible(true);
    }
    
    private void userInterface(){
        model = new DefaultTableModel();
        model.setColumnIdentifiers(new Object[]{"Nama", "Tanggal Lahir", "Penghasilan"});
        tabel = new JTable(model);
        
        model.addRow(new Object[]{"Akira", Date.valueOf("1995-10-16"), 2600000});
        model.addRow(new Object[]{"Hikaru", Date.valueOf("1990-09-23"), 2500000});
        model.addRow(new Object[]{"Natsuki", Date.valueOf("1987-12-05"), 3750000});
        model.addRow(new Object[]{"Asoka", Date.valueOf("1989-01-15"), 5730000});
        
        tabel.getColumnModel().getColumn(1).setCellRenderer(new TanggalCellRenderer());
        tabel.getColumnModel().getColumn(2).setCellRenderer(new RupiahCellRenderer());
        
        getContentPane().add(new JScrollPane(tabel));
    }
    
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(new SyntheticaBlueLightLookAndFeel());
            ContohCellRenderer obj = new ContohCellRenderer();
        } catch (UnsupportedLookAndFeelException | ParseException ex) {
            ex.printStackTrace();
        }
    }
}


Hasil output-nya :

Cara Merubah CellRenderer JTable pada Java Netbeans

Untuk program java diatas saya menggunakan Synthetica Look and Feels, Bagi kalian yang tidak ingin menggunakan Synthetica Look and Feels silahkan ubah method main java menjadi sebagai berikut :

    public static void main(String[] args) {
        ContohCellRenderer obj = new ContohCellRenderer();
    }

Baca Juga : Contoh Penggunaan Synthetica Look and Feels pada Java

Sekian Tutorial Cara Merubah CellRenderer JTable pada Java Netbeans. Silahkan tinggalkan komentar.

Copyrighted.com Registered & Protected 
CVUU-FQY1-BZBQ-GMCE

2 comments

Bagaimana kalau tabelnya ada di JFrame ? Dan datanya ada di xampp, apakah bisa di tambahkan Rp jg ?

maksudnya gimana gan, tabelnya ada di JFrame. karena contoh diatas pembuatan JTable-nya kan di JFrame.
kalau ngambil datanya dari database juga bisa.


EmoticonEmoticon