Kamis, 25 Februari 2010

Memasukkan JButton kedalam JTable

Baru dapat kasus ne, bagaimana memasukkan JButton sebagai CellRenderer dan CellEditor pada JTabel, Button ini akan dipakai untuk menampilkan dialog form untuk kebutuhan pengisian data ke dalam tabel.


dari gambar diatas, terlihat beberapa tombol / JButton pada kolom 3, untuk JCheckBox, JTextField dan JComboBox memang sudah di sediakan secara default didalam kelas DefaultCellEditor dan DefaultCellRenderer, nah disini saya membuat 2 buah kelas tambahan yang mengimplementasikan kelas TableCellRenderer dan turunan dari kelas DefaultCellEditor.
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JTextField;

/**
*
* @author Ahmad Thahir
*/
public class MyDefaultCellEditor extends DefaultCellEditor {

public MyDefaultCellEditor (final JButton b) {
super (new JTextField());
editorComponent = b;
this.clickCountToStart = 1;
}

}

dan
import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;

/**
*
* @author Ahmad Thahir
*/
public class ButtonRenderer extends JButton implements TableCellRenderer {

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
return this;
}

}

nah, silahkan pelajari 2 kelas diatas agar dapat dikembangkan dan dapat dimodifikasi lagi sesuai kebutuhan, misalnya clickCountToStart = 1 bernilai 1 agar pada saat 1 kali klik, CellEditor akan langsung merespon, variable ini biasanya bernilai 2 untuk JTextField, dan silahkan juga dipelajari untuk kebutuhan yang lain, misalnya set background dan foreground, dan jika kelas sudah selesai tinggal di set aja ke jtable seperti ini :

ButtonRenderer btnSelect = new ButtonRenderer ();


tabelPerawatan.getColumnModel().getColumn(2).setCellRenderer(btnSelect);
tabelPerawatan.getColumnModel().getColumn(2).setCellEditor(new MyDefaultCellEditor(btnSelect));

semoga bermanfaat

Tidak ada komentar:

Posting Komentar