我创建了一个从Manager类继承的类,该类将充当其他四个称为AbstractColumn的抽象类的持有人。
想象一个有4列的表,该表本身是主类,每列是AbstractColumn。
我不明白为什么会收到此错误。
这是我的课。
Main ColumnHolder.java类
package tec.expenses;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.VerticalFieldManager;
import net.rim.device.api.ui.decor.Background;
import net.rim.device.api.ui.decor.BackgroundFactory;
public class ColumnHolderManager extends Manager{
private AbstractColumn Entry;
private AbstractColumn Category;
private AbstractColumn Date;
private AbstractColumn Amount;
protected ColumnHolderManager(long style){
super(style);
Background mainBackground = BackgroundFactory.createSolidBackground(0xEEEEEE);
setBackground(mainBackground);
AbstractColumn Entry = new AbstractColumn("Entry", NO_HORIZONTAL_SCROLL);
AbstractColumn Category = new AbstractColumn("Category", NO_HORIZONTAL_SCROLL);
AbstractColumn Date = new AbstractColumn("Date", NO_HORIZONTAL_SCROLL);
AbstractColumn Amount = new AbstractColumn("Amount", NO_HORIZONTAL_SCROLL);
add(Entry);
add(Category);
add(Date);
add(Amount);
}
protected void sublayout(int width, int height) {
/*layoutChild(this.Entry, 85, 50);
setPositionChild(this.Entry, 10, 10 );
layoutChild(this.Category, 85, 50);
setPositionChild(this.Category, 40, 0 );
layoutChild(this.Date, 85, 50);
setPositionChild(this.Date, 70, 0 );
layoutChild(this.Amount, 85, 50);
setPositionChild(this.Amount, 100, 0 );*/
setExtent(360, 203);
}
}
抽象AbstractColumn类
package tec.expenses;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.decor.Background;
import net.rim.device.api.ui.decor.BackgroundFactory;
public class AbstractColumn extends Manager {
LabelField labelHeader;
protected AbstractColumn(String header, long style){
super(style);
Background mainBackground = BackgroundFactory.createSolidBackground(0xCACACA);
setBackground(mainBackground);
this.labelHeader = new LabelField(header);
add(labelHeader);
}
protected void sublayout(int width, int height) {
layoutChild(labelHeader, 80, 30);
setPositionChild(labelHeader, 5, 5);
setExtent(90, 50);
}
}
如您所见,这些类非常简单,但我不明白为什么会出现此错误。
我正在使用Eclipse作为IDE为Blackberry开发此应用程序。
当我注释掉Sublayout方法的setPositionChild方法时,我不再得到异常,这意味着在ColumnHolderManager类的构造函数中,并没有真正创建新的AbstractColumn对象。
有什么帮助吗?
最佳答案
在这些行中:
AbstractColumn Entry = new AbstractColumn("Entry", NO_HORIZONTAL_SCROLL);
AbstractColumn Category = new AbstractColumn("Category", NO_HORIZONTAL_SCROLL);
AbstractColumn Date = new AbstractColumn("Date", NO_HORIZONTAL_SCROLL);
AbstractColumn Amount = new AbstractColumn("Amount", NO_HORIZONTAL_SCROLL);
您正在创建和初始化局部变量。
您要初始化实例成员。像这样:
Entry = new AbstractColumn("Entry", NO_HORIZONTAL_SCROLL);
Category = new AbstractColumn("Category", NO_HORIZONTAL_SCROLL);
Date = new AbstractColumn("Date", NO_HORIZONTAL_SCROLL);
Amount = new AbstractColumn("Amount", NO_HORIZONTAL_SCROLL);
同样,正常的Java代码样式规则指示您的成员应以小写字母开头:输入,类别,日期,金额。