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() ;
}
无法在page
方法中访问变量getgroup()
,它将0传递给getgroup()
方法。
public ArrayList<GroupData> data = (new DatabaseLayer ()).getGroup(page);
答案 0 :(得分:1)
您的问题尚不清楚,但我怀疑问题只是所有实例初始值设定项都在构造函数体之前运行,因此您看到了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)并将它们全部设为私有,以便更容易推断出它们的使用方式。但是,主要的变化是将new DatabaseLayer ().getGroup(page)
代码移动到构造函数中。
答案 1 :(得分:0)
public class TableModel extends AbstractTableModel {
public int page;
public ArrayList<GroupData> data;
public TableModel(Integer p) {
this.page=p;
this.data = (new DatabaseLayer ()).getGroup(page);
System.out.println("mm"+page);
}
public void pudata() {
System.out.println(page);
}
//System.out.println("model "+page);
private String[] columnNames = {"groupName","membersCount","previliage"};
@Override
public int getRowCount() {
return data.size() ;
}
答案 2 :(得分:0)
每次为data
字段指定新值时,请刷新page
字段。
public TableModel(int p) {
setPage(p);
}
public void setPage(int p) {
this.page = p;
this.data = new DatabaseLayer ().getGroup(page);
}
答案 3 :(得分:0)
这是绝对正确的,因为:
public int page;
页面的默认值为0
,因为其int
。
public ArrayList<GroupData> data = (new DatabaseLayer ()).getGroup(page);
是一个变量初始化,所以在page
初始化之前,你将它传递给.getGroup(page)
,所以默认值将在那种情况下通过。
因此,您必须在getGroup(int)
初始化后调用page
方法,可以采用以下方法:
private final List<GroupData> data;
public TableModel(Integer p) {
this.page = p;
this.data = new DatabaseLayer().getGroup(page);
System.out.println("mm"+page);
}