Я пытаюсь создать пустую таблицу с 5 столбцами и добавить в нее строки. Я создал отдельный класс tablemodel, который расширяет AbstractTableModel
.
Класс:
public class MyTableModel extends AbstractTableModel
{
private String[] columnNames = {"Name",
"Size",
"Directory",
"Last Modified Time",
"Readable"};
Object[][] data=new Object[][]{
};
public int getColumnCount()
{
return columnNames.length;
}
public String getColumnName(int col)
{
return columnNames[col];
}
public Class getColumnClass(int c)
{
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col)
{
if (col < 1)
{
return false;
}
else
{
return false;
}
}
public void setValueAt(Object value, int row, int col)
{
data[row][col]=value;
}
public void updateJarTable(Object[] row)
{
setValueAt(row[0],0,0);
fireTableDataChanged();
setValueAt(row[1],0,1);
fireTableDataChanged();
setValueAt(row[2],0,2);
fireTableDataChanged();
setValueAt(row[3],0,3);
fireTableDataChanged();
setValueAt(row[4],0,4);
fireTableDataChanged();
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return data.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
return data[rowIndex][columnIndex];
}
}
После этого я создаю таблицу и применяю к ней эту табличную модель как:
table=new JTable(new MyTableModel());
когда я нажимаю кнопку, должна быть добавлена новая строка.
submit.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e)
{
Object[] row={"col1","col2","col3","col4","col5"};
model1.updateJarTable(row);
table.revalidate();
}
});
Где модель1:
private MyTableModel model1=new MyTableModel();
Но когда я запускаю его, я получаю ArrayIndexOutofBoundsException
в методах: updateJarTable
и setValueAt
Я не знаю, где я ошибся. пожалуйста, помогите мне найти его. Спасибо !