Java 如何从可调整大小的JTable中获取值
我有一个带有默认值的JTable 4x4。用户可以更改JTable的大小。将大小更改为例如6x6后,将清除默认值,用户可以键入自己的值。如何将它们放到某个整数表中?我试图从模型类中使用getValueAt()和setValueAt(),但在单击其他单元格后,JTable字段总是被清除Java 如何从可调整大小的JTable中获取值,java,swing,jtable,resizable,getvalue,Java,Swing,Jtable,Resizable,Getvalue,我有一个带有默认值的JTable 4x4。用户可以更改JTable的大小。将大小更改为例如6x6后,将清除默认值,用户可以键入自己的值。如何将它们放到某个整数表中?我试图从模型类中使用getValueAt()和setValueAt(),但在单击其他单元格后,JTable字段总是被清除 class MyTableModel extends AbstractTableModel { int size; private String[] columnNames = { "Stan 1", "Stan
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);
}
}
不需要自定义TableModel或重写getValueAt(…)和setValueAt(…)方法 如果您想更改
DefaultTableModel
中的数据,您可以使用setDataVector(…)
方法。请发布一个有效的文件,以便我们可以自己运行和测试您的代码。这应该是一个小程序,小到足以在这个网站上发布代码格式的文本,应该编译,运行,并向我们展示您的问题。