Ich habe ein JTable 4x4 mit Standardwerten. Der Benutzer kann die JTable-Größe ändern. Nach Änderung der Größe z. 6x6, Standardwerte werden gelöscht und der Benutzer kann seine eigenen eingeben. Wie bekomme ich sie zu einem Integer-Tisch? Ich versuchte, getValueAt() und setValueAt() aus meiner Modellklasse zu verwenden, aber JTable-Felder wurden immer gelöscht, nachdem auf eine andere Zelle geklickt wurde.So erhalten Sie den Wert von der Größe 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);
}
}
Bitte geben Sie eine gültige [mcve] ein, damit wir Ihren Code selbst ausführen und testen können. Dies sollte ein kleines Programm sein, klein genug, um auf dieser Seite als Code-formatierten Text zu posten, sollte dein Problem kompilieren, ausführen und zeigen. –