在我实施"method is never used locally"
方法后,我收到了removeRow
消息。我也无法使用/访问此方法。
class TableModel extends AbstractTableModel {
private String[] columnNames = {"ID", "Name"};
ArrayList<Entry> list;
public TableModel(Entry[] entries) {
// assigns entries to list
}
public int getColumnCount() {
return columnNames.length;
}
public String getColumnName(int col)
{
return columnNames[col];
}
public int getRowCount() {
return list.size();
}
// this method gives a "never used locally" message
public void removeRow(int row)
{
list.remove(row);
fireTableRowsDeleted(row, row);
}
public Object getValueAt(int row, int col) {
Entry entry = list.get(row);
if(entry != null)
{
switch (col) {
case 0:
return entry.getId();
case 1:
return entry.getName();
default:
return "";
}
}
}
}
然后,当按下removeRow(int row)
按钮时,我尝试通过以下方式访问delete
:
public void actionPerformed(ActionEvent event)
{
int i =1;
table.getModel().removeRow(i); // removeRow not recognised
}
答案 0 :(得分:5)
class TableModel extends AbstractTableModel {
TableModel
是一个界面。为您的班级使用更好的名字。 (我不知道当你尝试使类名与接口名相同时会发生什么)。相反,你应该使用类似的东西:
class EntryTableModel extends AbstractTableModel {
由于您的模型用于包含“Entry”对象。
table.getModel().removeRow(i);
上面的代码令人困惑,因为getModel()
方法返回TableModel
,但这实际上是TableModel接口还是TableModel类?
要使用您的自定义模型,您的代码应该是:
TableModel model = table.getModel();
EntryTableModel entryModel = (EntryTableModel)model;
entryModel.removeRow(i);
答案 1 :(得分:4)
你应该投你的班级。执行table.getModel
后,您获得AbstractTableModel
,其中不包含名为removeRow
的方法
试
((TableModel)table.getModel()).removeRow(i)