java jtable removeRow:java.lang.IndexOutOfBoundsException:索引:1,大小:1 [英] java jtable removeRow : java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
问题描述
我要在JTable中删除一行,并且出现以下异常:IndexOutOfBoundsException:Index:1,Size:1.
I'm removing a row in my JTable and i have this Exception : IndexOutOfBoundsException: Index: 1, Size: 1".
这是我的TableModel类:
This is my TableModel Classe:
public Class MyTableModel extends AbstractTableModel {
private static final long serialVersionUID = -912060609250881296L;
private ResultSet rs;
private int rowCount;
private int columnCount;
private ArrayList<Object[]> data=new ArrayList<Object[]>();
private ArrayList<TableModelListener> listeners = new ArrayList<TableModelListener>();
public TableModelMicrosite(ResultSet _rs) throws Exception
{
setRS(_rs);
}
public void setRS(ResultSet _rs)
throws Exception
{
this.rs=_rs;
ResultSetMetaData metaData=_rs.getMetaData();
rowCount=0;
columnCount=metaData.getColumnCount();
while(_rs.next()){
Object[] row=new Object[columnCount];
for(int j=0;j<columnCount;j++){
row[j]=_rs.getObject(j+1);
}
data.add(row);
rowCount++;
}
}
public boolean isCellEditable(int rowIndex, int columnIndex){
return false;
}
public void addTableModelListener(TableModelListener l)
{
if (listeners.contains(l))
return;
listeners.add(l);
}
public void setValueAt(Object value, int rowIndex, int columnIndex)
{
data.get(rowIndex)[columnIndex] = value;
TableModelEvent tabModEvent = new TableModelEvent(this, rowIndex,
rowIndex, columnIndex, TableModelEvent.UPDATE);
for (TableModelListener l: listeners)
l.tableChanged(tabModEvent);
fireTableCellUpdated(rowIndex, columnIndex);
System.out.println("Changed : " + value);
}
public int getColumnCount(){
return columnCount;
}
public int getRowCount(){
return rowCount;
}
public Object getValueAt(int rowIndex, int columnIndex){
Object[] row=(Object[]) data.get(rowIndex);
System.out.println("rowIndex : "+rowIndex); System.out.println("columnIndex : "+columnIndex);
return row[columnIndex];
// return data[rowIndex][columnIndex];
}
public String getColumnName(int columnIndex){
try{
ResultSetMetaData metaData=rs.getMetaData();
return metaData.getColumnName(columnIndex+1);
}catch(Exception e){
e.printStackTrace();
return null;
}
}
public void addRow(Object[] row) {
data.add(0, row);
fireTableRowsInserted(0, 0);
}
public void removeRow(int selectedrow) {
data.remove(selectedrow) ;
fireTableRowsDeleted(selectedrow, selectedrow);
}
}
这就是我在主体类中调用removeRow()方法的方式:
And this is how i call my removeRow() method in my principal Class :
table = new JTable(monDataModel());
int [] row = table.getSelectedRows();
table.clearSelection();
List<Integer> selectedModelRows = new LinkedList<Integer>();
for (int i = 0; i < row.length; i++) {
selectedModelRows.add(table.convertRowIndexToModel(row[i]));
}
Collections.sort(selectedModelRows, Collections.reverseOrder());
for (int selectedModelRow : selectedModelRows) {
((TableModelMicrosite) table.getModel()).removeRow(selectedModelRow);
((TableModelMicrosite) table.getModel()).fireTableRowsDeleted(selectedModelRow, selectedModelRow);
}
我认为TableModel中的getValue()方法存在问题,但我不知道这是什么错误.
I think there is a issue with the getValue() method in the TableModel, but i don't know what is the mistake.
你能帮我吗?非常感谢 !
Can you help me please ? Thanks a lot !
推荐答案
这是我正在尝试的方法,但是我仍然遇到"IndexOutOfBoundsException"异常
公共无效的RemoveRowFromTable()
public void removingRowFromTable()
{
//myTable =新的JTable(myTableModel);
//myTable = new JTable(myTableModel);
int []行= myTable.getSelectedRows();
int [] rows = myTable.getSelectedRows();
for(int i = 0; i< rows.length; i ++){
for(int i = 0; i < rows.length; i++) {
int row = rows [i];
int row = rows[i];
int modelRow = myTable.convertRowIndexToModel(rows);
int modelRow = myTable.convertRowIndexToModel(rows);
myTable.getModel().removeRow(modelRow);
myTable.getModel().removeRow(modelRow);
}
这是我在tableModel中的删除方法:
public void removeRow(int selectedrow)
public void removeRow(int selectedrow)
{
data.remove(selectedrow);
data.remove(selectedrow) ;
fireTableRowsDeleted(selectedrow,selectedrow);
fireTableRowsDeleted(selectedrow, selectedrow);
}
这篇关于java jtable removeRow:java.lang.IndexOutOfBoundsException:索引:1,大小:1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!