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.