一直以來對 TableCellRenderer 都搞不清楚,明明就只有一個簡單的函數,但是說明也太少了,少到完全不知要怎麼實現。現在就來看下面程式碼來搞清楚。

原始碼下載 String[] columnNames = { ..... Object[][] data = {..... jTable = new JTable(data, columnNames); jTable.getColumn("C").setCellRenderer(new ButtonRenderer()); public class ButtonRenderer extends JButton implements TableCellRenderer { public Component getTableCellRendererComponent(JTable arg0, Object arg1, boolean arg2, boolean arg3, int arg4, int arg5) { this.setText((arg1 == null) ? "null" : arg1.toString()); return this; } }

上面的範例很簡單就是把 C 那一列都顯示 button,而 Object arg1 就是代表該儲存格的物件。如果把 this.setText 這一行拿掉,就只有顯示空白按鈕而已。所以從此就可以推論每一個儲存格要顯示時,都會呼叫 TableCellRenderer 傳回一個物件去顯示,而且每一個儲存格都有自己的 TableCellRenderer,預設為 DefaultTableCellRenderer。

創作者介紹

邱小新の工作筆記

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()