Java 向抽象JTable模型添加行
我试图在我的JTable中添加一行,我使用的是一个抽象方法,如下所示。我目前正在将列表中的数据提取到JTable的SetValues。有人知道如何在不更改列名和数据类型的情况下向其中添加行吗?使用名为addRows的方法,即。我环顾四周,但没有其他问题解决了我的问题Java 向抽象JTable模型添加行,java,swing,jtable,abstracttablemodel,Java,Swing,Jtable,Abstracttablemodel,我试图在我的JTable中添加一行,我使用的是一个抽象方法,如下所示。我目前正在将列表中的数据提取到JTable的SetValues。有人知道如何在不更改列名和数据类型的情况下向其中添加行吗?使用名为addRows的方法,即。我环顾四周,但没有其他问题解决了我的问题 class MyTableModel extends AbstractTableModel { public String[] columnNames = {"A","B","C","D","E"}; public
class MyTableModel extends AbstractTableModel {
public String[] columnNames = {"A","B","C","D","E"};
public Object[][] data = {
{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe",
"Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)}
};
public void removeRow(int row)
{
Object [][]newData=new Object[data.length+1][data[0].length];
for(int i=0;i<newData.length;i++){
for(int j=0;j<data[0].length;j++){
newData[i][j]=data[i+1][j];
}
}
data=new Object[newData.length][columnNames.length];
data=newData;
fireTableRowsDeleted(row, row);
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
return col > 2;
}
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
}
类MyTableModel扩展了AbstractTableModel{
公共字符串[]columnNames={“A”、“B”、“C”、“D”、“E”};
公共对象[][]数据={
{“凯西”,“史密斯”,
“滑雪板”,新整数(5),新布尔值(假)},
{“约翰”,“多伊”,
“划船”,新整数(3),新布尔值(真)},
{“苏”,“黑”,
“编织”,新整数(2),新布尔值(假)},
{“简”、“白”,
“快速读取”,新整数(20),新布尔值(真)},
{“乔”,“布朗”,
“Pool”、新整数(10)、新布尔值(false)}
};
公共无效清除器OW(int行)
{
对象[][]新数据=新对象[data.length+1][data[0.length];
对于(int i=0;i,以下方法在末尾添加一行:
public void addRow(Object[] newRow) {
data = Arrays.copyOf(data, data.length+1);
data[data.length-1] = newRow;
fireTableRowsInserted(data.length-1, data.length-1);
}
像这样使用它:
model.addRow(new Object[]{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)}
);
让MyTableModel扩展DefaultTableModel并使用现有的方法,而不是重新发明轮子。但是我需要能够更改模型中的数据,并且被告知AbstractTableModel会更容易,我已经实现了removeRow…我只需要AddRow你的removeRow不正确。删除后新数据的大小更大。哦,是的h、 。我需要做些什么才能使它工作?使用现有的DefaultTreeModelI一定对我的removeRow做了一些错误,我试图修复它,但不起作用。你知道如何修复我的removeRow方法吗?这应该可以工作:public void removeRow(int row){System.arraycopy(数据,行+1,数据,行,数据。长度-row-1);data=Arrays.copyOf(data,data.length-1);fireTableRowsDeleted(row,row);}