【发布时间】:2014-03-27 06:59:45
【问题描述】:
我正在尝试创建一个包含 5 列的空表并向其中添加行。我创建了一个扩展 AbstractTableModel 的单独 tablemodel 类。
班级是:
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();
}
});
model1 在哪里:
private MyTableModel model1=new MyTableModel();
但是当我运行它时,在方法上得到ArrayIndexOutofBoundsException:updateJarTable 和setValueAt
我不知道我哪里出错了。请帮我找到它。谢谢 !
【问题讨论】:
-
最好使用 DefaultTableModel 而不是重新发明轮子实现自己的表模型
标签: java swing jtable tablemodel