无法使用在JTable UI编程中扩展AbstractTableModel的类中声明的方法

Den*_*niz 2 java swing jtable abstracttablemodel

"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 "";
                  }
              }
         }
     }
Run Code Online (Sandbox Code Playgroud)

然后,removeRow(int row)delete按下按钮时,我尝试通过以下方式访问:

public void actionPerformed(ActionEvent event)
{
          int i =1;
      table.getModel().removeRow(i); // removeRow not recognised
}
Run Code Online (Sandbox Code Playgroud)

cam*_*ckr 5

class TableModel extends AbstractTableModel {
Run Code Online (Sandbox Code Playgroud)

TableModel是一个界面.为您的班级使用更好的名字.(我不知道当你尝试使类名与接口名相同时会发生什么).相反,你应该使用类似的东西:

class EntryTableModel extends AbstractTableModel {
Run Code Online (Sandbox Code Playgroud)

由于您的模型用于包含"Entry"对象.

table.getModel().removeRow(i);
Run Code Online (Sandbox Code Playgroud)

上面的代码令人困惑,因为该getModel()方法返回一个TableModel,但这真的是TableModel接口还是TableModel类?

要使用自定义模型,您的代码应该类似于:

TableModel model = table.getModel();
EntryTableModel entryModel = (EntryTableModel)model;
entryModel.removeRow(i);
Run Code Online (Sandbox Code Playgroud)