1 package snow.sortabletable; 2 3 4 import java.awt.*; 5 import java.awt.event.*; 6 import javax.swing.*; 7 import javax.swing.event.*; 8 import javax.swing.table.*; 9 10 import java.util.*; 11 12 13 17 public class RowHeaderExtractorWrapperSortableTableModel extends AbstractTableModel 18 { 19 boolean first; 20 SortableTableModel baseModel; 21 int numberOfColumnHeaders; 22 23 public RowHeaderExtractorWrapperSortableTableModel( 24 boolean _first, 25 SortableTableModel _baseModel, 26 int _numberOfColumnHeaders) 27 { 28 super(); 29 this.first = _first; 30 this.baseModel = _baseModel; 31 this.numberOfColumnHeaders = _numberOfColumnHeaders; 32 33 baseModel.addTableModelListener(new TableModelListener() 35 { 36 public void tableChanged(TableModelEvent e) 37 { 38 if(e.getFirstRow()==TableModelEvent.HEADER_ROW) 39 { 40 fireTableStructureChanged(); 41 } 42 else 43 { 44 fireTableDataChanged(); 45 } 46 } 47 }); 48 49 } 51 52 53 private int getColumn(int col) 54 { 55 if(first) return col; 56 return col + numberOfColumnHeaders; 57 } 58 59 60 63 public int getRowCount() {return baseModel.getRowCount();} 64 65 public int getColumnCount() 66 { 67 return (first? 68 numberOfColumnHeaders 69 :baseModel.getColumnCount()-numberOfColumnHeaders); 70 } 71 72 73 public Object getValueAt(int row, int column) 74 { 75 return baseModel.getValueAt(row, getColumn(column)); 76 } 77 78 public boolean isCellEditable(int row, int col) 79 { 80 return baseModel.isCellEditable(row, getColumn(col)); 81 } 82 83 public void setValueAt(Object val, int row, int col) 84 { 85 baseModel.setValueAt(val, row, getColumn(col)); 86 } 87 88 public String getColumnName(int column) 89 { 90 return baseModel.getColumnName( getColumn(column) ); 91 92 } 93 94 public Class getColumnClass(int col) 95 { 96 return baseModel.getColumnClass(getColumn(col)); 97 } 98 99 100 116 117 } | Popular Tags |