Monday, May 30, 2016

Membuat Kolom JTable Format Rupiah



Membuat kolom JTable format rupiah
Halo guys,, rehat sejenak dari bahasan JavaFX  sekarang kita akan belajar cara membuat format rupiah pada JTable. Banyak yang bertanya bagaimana caranya format textfield pada kolomnya. Coba kita ubah sudut pandang itu. Ada beberapa fitur pada JTable yang bisa kita manfaatkan tanpa perlu memformat String yang ribet. Salah satunya adalah render. Oke tak perlu berlama-lama lagi, pertama-tama kita buka Netbeans dan buat projek bernama ManipulasiJTable. 

Kemudian buat file java bernama HargaRender seperti di bawah ini : 


public class HargaRender implements TableCellRenderer{
    
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        JPanel panel = new JPanel(new BorderLayout());
        JLabel labelRp = new JLabel("Rp. ");
        JLabel labelHarga = new JLabel(String.valueOf(value));
        labelHarga.setHorizontalAlignment(RIGHT);
        panel.add(labelRp, BorderLayout.WEST);
        panel.add(labelHarga, BorderLayout.CENTER);
        
        if(isSelected){
            panel.setBackground(table.getSelectionBackground());;
        }else{
            panel.setBackground(table.getBackground());
        }
        
        return panel;
    }
}


1.       Kelas HargaRender kita implementasikan dengan TableCellRenderer dan override
method getTableCellRendererComponent yang dapat digunakan untuk memanipulasi kolom dari cell Jtable.
Secara default getTableCellRenderer ini akan mereturn Label. Berhubung label tidak bisa digunakan untuk menampung dua komponen secara bersamaan, kita ganti dengan JPanel dan mengesetLayoutnya menjadi BorderLayout. Kemudian kita buat 2 buah Label, LabelRp dan labelHarga. Pada labelHarga kita setHorizontalAlignmentnya menjadi RIGHT agar teks yang ada di dalamnya diawali dari kanan. Setelah itu kita tambahkan kedua label tersebut dimana labelRp diset ke sebelah kiri dengan BorderLayout.WEST dan labelHarga di sebelah Tengah dengan BorderLayout.CENTER.
JPanel panel = new JPanel(new BorderLayout());
JLabel labelRp = new JLabel("Rp. ");
JLabel labelHarga = new JLabel(String.valueOf(value));
labelHarga.setHorizontalAlignment(RIGHT);
panel.add(labelRp, BorderLayout.WEST);
panel.add(labelHarga, BorderLayout.CENTER);

Kemudian kita atur agar background dari cellnya mengikuti dengan Jtable nya. Kemudian return nilainya sebagai panel.
if(isSelected){
panel.setBackground(table.getSelectionBackground());
}else{
panel.setBackground(table.getBackground());
}
return panel;
Sekarang buat sebuah JFrame untuk menampung tabel yang kita buat dan isikan data defaultnya menjadi seperti gambar di bawah ini :
Kemudian pada constructor JFrame tambahkan perintah seperti ini
public FrameTabel() {
        initComponents();
        jTable1.getColumnModel().getColumn(2).setCellRenderer(new HargaRender());
    }



Kemudian pada kelas main ManipulasiJTable tambahkan perintah seprti ini

public class ManipulasiJTable extends JFrame{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        FrameTabel frame = new FrameTabel();
        frame.setVisible(true);
    }
    
}

 
coba Run Programnya maka akan menjadi seperti ini 


Bagaimana mudah bukan?? tak perlu susah susah untuk memformat string. Source codenya dapat didownload di sini.

Sekian tutorial kali ini. Semoga bermanfaat.

No comments:

Post a Comment