J'ai un JTable 4x4 avec des valeurs par défaut. L'utilisateur peut changer la taille de JTable. Après avoir changé la taille à par exemple. 6x6, les valeurs par défaut sont effacées et l'utilisateur peut taper le sien. Comment les amener à une table Integer? J'essayais d'utiliser getValueAt() et setValueAt() de ma classe de modèle mais les champs JTable étaient toujours effacés après avoir cliqué sur une autre cellule.Comment obtenir la valeur de redimensionnable JTable
class MyTableModel extends AbstractTableModel {
int size;
private String[] columnNames = { "Stan 1", "Stan 2", "Stan 3", "Stan 4" };
private Object[][] defaultValues = new Object[][] {
{ "5", "15", "10", "0"},
{ "10", "10", "-20", "30"},
{ "40", "0", "50", "-30"},
{ "60", "0", "20", "-10"}};
private Object[][] newData = null;
public MyTableModel(int x) {
size = x;
}
@Override
public int getRowCount() {
return size;
}
@Override
public int getColumnCount() {
return size;
}
@Override
public String getColumnName(int columnIndex) {
if(columnIndex == 0) return null;
else return "Stan " + Integer.toString(columnIndex);
}
@Override
public Class getColumnClass(int columnIndex) {
return Integer.class;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if(size == 4)
return defaultValues[rowIndex][columnIndex];
else {
newData = new Object[size][size];
return newData[rowIndex][columnIndex];
}
}
@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
if(size == 4)
defaultValues[rowIndex][columnIndex] = value;
else
newData[rowIndex][columnIndex] = value;
fireTableCellUpdated(rowIndex, columnIndex);
}
}
Veuillez publier un [mcve] valide afin que nous puissions exécuter et tester nous-mêmes votre code. Cela devrait être un petit programme, assez petit pour être publié sur ce site en tant que texte formaté en code, devrait compiler, exécuter et nous montrer votre problème. –