public class TableModel extends AbstractTableModel {
public int page;
public TableModel(Integer p) {
this.page=p;
System.out.println("mm"+page);
}
public void pudata() {
System.out.println(page);
}
//System.out.println("model "+page);
private String[] columnNames = {"groupName","membersCount","previliage"};
public ArrayList<GroupData> data = (new DatabaseLayer ()).getGroup(page);
@Override
public int getRowCount() {
return data.size() ;
}
无法在 getgroup()
方法中访问变量 page
,它将 0 传递给 getgroup()
方法。
public ArrayList<GroupData> data = (new DatabaseLayer ()).getGroup(page);
最佳答案
您的问题不清楚,但我怀疑问题在于所有实例初始值设定项都在构造函数主体之前运行,因此您会看到 page 的默认值
.你应该有这样的东西:
public class TableModel extends AbstractTableModel {
private static final String[] columnNames =
{"groupName","membersCount","previliage"}; // TODO: Fix spelling!
private final int page;
private final List<GroupData> data;
public TableModel(int page) {
this.page = page;
this.data = new DatabaseLayer().getGroup(page);
}
...
}
将所有实例/静态变量声明保留在一个位置(我更喜欢将它们保留在顶部,但是YMMV)并将它们全部设为私有(private),以便更容易推断它们的使用方式,这通常是一个好主意。然而,主要的变化是将 new DatabaseLayer ().getGroup(page)
代码移至构造函数中。
关于java - 无法访问外部成员(member),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17272671/