Witam.
Mam problem z edycja komorek tabeli. Przykładowo kiedy klikne dwokrotnie w komorke z kolumny nr1 mam możliwość edycji jej, następnie jeśli kliknę dwa razy w komórke kolumnyi nr 2 wartosc tej komorki zmieni się na wartość komorki z kolumny nr 1. Wartosc z komorki w kolumnie 2 znajdzie się w kolumnie nr 3. Gdzie leży problem? Z gory dzieki za pomoc i pozdrawiam.
To moja tabela i model:
private class MyTableModel extends AbstractTableModel
{
public MyTableModel()
{
data = new ArrayList<ArrayList<Object>>();
headers = new ArrayList<String>();
}
@Override
public boolean isCellEditable (int x, int y)
{
return true;
}
public int getRowCount()
{
return data.size();
}
public int getColumnCount()
{
return numberOfColumns;
}
public Object getValueAt(int rowIndex, int columnIndex)
{
return data.get(rowIndex).get(columnIndex);
}
@Override
public void setValueAt(Object obj, int rowIndex, int columnIndex)
{
data.get(rowIndex).add(columnIndex, obj);
fireTableDataChanged();
}
public void addColumn(String header)
{
++numberOfColumns;
System.out.println(numberOfColumns);
for(ArrayList<Object> lista : data)
lista.add(numberOfColumns-1, null);
headers.add(header);
fireTableStructureChanged();
}
public String getHeader(int i)
{
return headers.get(i-1);
}
public void addRow()
{
data.add(new ArrayList<Object>(numberOfColumns));
fireTableDataChanged();
}
public void wypiszData()
{
for(ArrayList<Object> wiersz : data)
{
for(Object obj : wiersz)
System.out.print(obj + " ; ");
System.out.println("");
}
}
public void removeColumn (int index)
{
for(ArrayList<Object> lista : data)
lista.remove(index);
headers.remove(index);
--numberOfColumns;
fireTableStructureChanged();
}
public void removeRow (int index)
{
data.remove(index);
fireTableRowsDeleted(index, index);
}
private ArrayList<ArrayList<Object>> data;
private volatile int numberOfColumns = 0;
private ArrayList<String> headers;
}
private class MyTable extends JTable
{
public MyTable (TableModel model)
{
super(model);
}
public String getColumnName(int column)
{
System.out.println(((MyTableModel)getModel()).getHeader(column));
return ((MyTableModel)getModel()).getHeader(column);
}
}