1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
public class AttributeValueModel extends DefaultTableModel
{
private String[] columnNames = {""};
private ArrayList listCellNotEditable;
private Object[][] data = {{""}};
public AttributeValueModel ()
{
super ();
this.listCellNotEditable = new ArrayList ();
}
public AttributeValueModel (int numRows, int numColumns)
{ super (numRows, numColumns);
this.listCellNotEditable = new ArrayList ();
}
public AttributeValueModel (Vector columnNames, int numRows)
{ super (columnNames, numRows);
this.listCellNotEditable = new ArrayList ();
}
public AttributeValueModel (Object[] columnNames, int numRows)
{ super (columnNames, numRows);
this.listCellNotEditable = new ArrayList ();
}
public AttributeValueModel (Vector data, Vector columnNames)
{ super (data, columnNames);
this.listCellNotEditable = new ArrayList ();
}
public AttributeValueModel (Object[][] data, Object[] columnNames)
{ super (data, columnNames);
this.listCellNotEditable = new ArrayList ();
}
public void setColumnNames(String[] columnN)
{
System.out.println(" les colonnes changent :"+columnN);
columnNames=columnN;
}
public void setData(Object[][] dataTable)
{
System.out.println(" les données changent :"+dataTable);
data=dataTable;
super.setDataVector(data, columnNames);
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public void clearArrayCellSelectable()
{
this.listCellNotEditable.clear();
}
/*
* JTable uses this method to determine the default renderer/ editor for
* each cell. If we didn't implement this method, then the last column
* would contain text ("true"/"false"), rather than a check box.
*/
public Class getColumnClass(int c)
{
return Object.class;
}
/*
* Don't need to implement this method unless your table's editable.
*/
public boolean isCellEditable(int row, int col)
{
int index = this.listCellNotEditable.indexOf (new Point (row, col));
if ( index == -1 )
{ return ( false );
}
else
{ return ( true );
}
}
public void addCellEditable (int row, int column)
{ if ( ! (column >= 0 && column < this.getColumnCount ()) )
{ return;
}
if ( ! ((row >= 0) && (row < this.getRowCount ())) )
{ return;
}
this.listCellNotEditable.add (new Point (row, column));
}
public void removeNotEditableCell (int row, int column)
{ int index = this.listCellNotEditable.indexOf (new Point (row, column));
if ( index != -1 )
{ this.listCellNotEditable.remove (index);
}
}
/*
* Don't need to implement this method unless your table's data can
* change.
*/
public void setValueAt(Object value, int row, int col) {
System.out.println("Setting value at " + row + "," + col + " to " + value + " (an instance of "+ value.getClass() + ")");
//printDebugData();
if(col == 1)
{
if(value instanceof JComboBox)
{
System.out.println("on rentre dans le combobox");
JComboBox combo = (JComboBox)value;
data[row][col] = combo.getSelectedItem();
fireTableCellUpdated(row, col);
removeNotEditableCell (row, col);
}
else if (value instanceof JTextField)
{
data[row][col] = value;
fireTableCellUpdated(row, col);
}
else
{
data[row][col] = value;
fireTableCellUpdated(row, col);
}
}
else
{
data[row][col] = value;
fireTableCellUpdated(row, col);
}
} |
Partager