Dynamic JTable
Assalamualakum wr. wb...
Sahabat sekalian pada kesempatan ini saya mau share cara membuat lebar JTabel (tabel pada java) otomatis menyesuaikan lebarnya sesuai dengan isi text yang ada.
1. Persiapan Kebutuhan
Untuk tutorial kali ini kita harus menyiapkan Netbeans IDE, tetapi sebenarnya mengunakan IDE lainnya seperti Eclipe juga tidak masalah.Sebagai ilustrasi seperti ditunjukan pada gambar dibawah, kita ingin merubah tampilan Jtabel bagian yang di kasih tanda merah terdapat space yang cukup lebar.2. Pembuatan Code
untuk memulai membuat program ini pertama buat projek baru dan beri nama TabelDinamis, stukturnya seperti ditunjukan pada gambar dibawah.Baca Juga :
- Aplikasi Inventory dengan Java dan MySql
- Aplikasi Perawatan Aset dengan Java dan MySql dilengkapi barcode
- System Informasi Akademik dengan PHP dan MySql
package asep.tabeldinamis;
/**
*
* @author asep
*/
public class Mahasiswa {
private String nim;
private String nama;
private String alamat;
public String getAlamat() {
return alamat;
}
public void setAlamat(String alamat) {
this.alamat = alamat;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getNim() {
return nim;
}
public void setNim(String nim) {
this.nim = nim;
}
}
selanjutnya buat tabelModelMahasiswa:/**
*
* @author asep
*/
public class Mahasiswa {
private String nim;
private String nama;
private String alamat;
public String getAlamat() {
return alamat;
}
public void setAlamat(String alamat) {
this.alamat = alamat;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getNim() {
return nim;
}
public void setNim(String nim) {
this.nim = nim;
}
}
package asep.tabeldinamis;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
*
* @author asep
*/
public class TableModelMahasiswa extends AbstractTableModel{
private List<Mahasiswa>list=new ArrayList<Mahasiswa>();
public TableModelMahasiswa(List<Mahasiswa> list) {
this.list=list;
}
public TableModelMahasiswa() {
}
@Override
public int getRowCount() {
return list.size();
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex){
case 0: return list.get(rowIndex).getNim();
case 1: return list.get(rowIndex).getNama();
case 2: return list.get(rowIndex).getAlamat();
default:return null;
}
}
@Override
public String getColumnName(int column) {
switch(column){
case 0: return "Nim";
case 1: return "Nama";
case 2: return "Alamat";
default:return null;
}
}
}
Selanjutnya buat class sesuaikan kolom:import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
*
* @author asep
*/
public class TableModelMahasiswa extends AbstractTableModel{
private List<Mahasiswa>list=new ArrayList<Mahasiswa>();
public TableModelMahasiswa(List<Mahasiswa> list) {
this.list=list;
}
public TableModelMahasiswa() {
}
@Override
public int getRowCount() {
return list.size();
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex){
case 0: return list.get(rowIndex).getNim();
case 1: return list.get(rowIndex).getNama();
case 2: return list.get(rowIndex).getAlamat();
default:return null;
}
}
@Override
public String getColumnName(int column) {
switch(column){
case 0: return "Nim";
case 1: return "Nama";
case 2: return "Alamat";
default:return null;
}
}
}
package asep.tabeldinamis;
import java.awt.Component;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
/**
*
* @author asep
*/
public class SesuaikanKolom {
public SesuaikanKolom(JTable table) {
buatKolomSesuai(table);
}
public void buatKolomSesuai(JTable t){
TableColumnModel columnModel=t.getColumnModel();
for(int kol = 0;kol<columnModel.getColumnCount();kol++){
int lebarKolomMax=0;
for(int baris=0;baris<t.getRowCount();baris++){
TableCellRenderer rend=t.getCellRenderer(baris, kol);
Object nilaiTabel=t.getValueAt(baris, kol);
Component comp=rend.getTableCellRendererComponent(t, nilaiTabel, false, false, baris, kol);
lebarKolomMax=Math.max(comp.getPreferredSize().width, lebarKolomMax);
}
TableColumn kolom=columnModel.getColumn(kol);
kolom.setPreferredWidth(lebarKolomMax);
}
}
}
Slanjutnya buatlah sebuah JFrame dan masukan sebuah tabel seperti gambar berikut:import java.awt.Component;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
/**
*
* @author asep
*/
public class SesuaikanKolom {
public SesuaikanKolom(JTable table) {
buatKolomSesuai(table);
}
public void buatKolomSesuai(JTable t){
TableColumnModel columnModel=t.getColumnModel();
for(int kol = 0;kol<columnModel.getColumnCount();kol++){
int lebarKolomMax=0;
for(int baris=0;baris<t.getRowCount();baris++){
TableCellRenderer rend=t.getCellRenderer(baris, kol);
Object nilaiTabel=t.getValueAt(baris, kol);
Component comp=rend.getTableCellRendererComponent(t, nilaiTabel, false, false, baris, kol);
lebarKolomMax=Math.max(comp.getPreferredSize().width, lebarKolomMax);
}
TableColumn kolom=columnModel.getColumn(kol);
kolom.setPreferredWidth(lebarKolomMax);
}
}
}
Buatlah sebuah metode tepat dibawah kode berikut:
public View() {
initComponents();
}
public List isiMahasiswa(){
List list=new ArrayList();
for(int i=0;i<20;i++){
Mahasiswa m=new Mahasiswa();
m.setNim("001");
m.setNama("asep hfhfefejfoe");
m.setAlamat("kebon jeruk gagaeierierererihfjef");
list.add(m);
}
return list;
}
Kemudian Masukan kode didalam kode ini:List list=new ArrayList();
for(int i=0;i<20;i++){
Mahasiswa m=new Mahasiswa();
m.setNim("001");
m.setNama("asep hfhfefejfoe");
m.setAlamat("kebon jeruk gagaeierierererihfjef");
list.add(m);
}
return list;
}
public View() {
initComponents();
//letakan disini
}
public View() {
initComponents();
this.setLocationRelativeTo(null);
TableModelMahasiswa modelMahasiswa=new TableModelMahasiswa(isiMahasiswa());
TabelMahasiswa.setModel(modelMahasiswa);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new SesuaikanKolom(TabelMahasiswa);
TabelMahasiswa.revalidate();
}
});
}
initComponents();
this.setLocationRelativeTo(null);
TableModelMahasiswa modelMahasiswa=new TableModelMahasiswa(isiMahasiswa());
TabelMahasiswa.setModel(modelMahasiswa);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new SesuaikanKolom(TabelMahasiswa);
TabelMahasiswa.revalidate();
}
});
}
3. Testing dan Output
ketika code program dijalankan maka akan tampil sepetri gambar dibawah ini, kita bisa lihat pebedaannya dengan gambar diatas, space kosong yang tadi cukup lebar dan tidak merata sekarang sudah bergeser dan menyesuaikan secara otomatis.download kode lengkapnya disini:
tabeldinamis