我正在Eclipse中使用j2me和LWUIT开发s60。
我写这个方法是为了绘制列表项,并尝试手动创建列表,而不是使用Lwuit列表。因为正如我在最后一个问题中所说的,这里是林。。不知道为什么,但它降低了性能。
因此,在下面我试图创建的方法中,我将添加两个标签到layoutX容器,并将Conatiner添加到layoutY容器,然后将layoutY添加到BaseContainer,这样输出看起来像列表。
方法在这里。。。
private void drawAgendasListItem(Vector vector) {
Container containerX[] = new Container[vector.size()];
Container containerY[] = new Container[vector.size()];
if (featuredeventsForm.contains(baseContainer)) {
baseContainer.removeAll();
featuredeventsForm.removeComponent(baseContainer);
System.out.println("base Container is removed ");
}
BoxLayout layoutX = new BoxLayout(BoxLayout.X_AXIS);
BoxLayout layoutY = new BoxLayout(BoxLayout.Y_AXIS);
for (int i = 0; i < vector.size(); i++) {
try {
containerX[i].setLayout(layoutX);
containerY[i].setLayout(layoutY);
Label startTime = new Label();
Label description = new Label();
startTime.getStyle().setBgTransparency(0);
startTime.setText("start 10:20 Am");
startTime.getStyle().setMargin(0, 0, 0, 5);
description.getStyle().setBgTransparency(0);
description.setText("decriptionString");
containerX[i].getStyle().setPadding(0, 0, 2, 2);
containerX[i].addComponent(startTime);
containerX[i].addComponent(description);
containerY[i].addComponent(containerX[i]);
baseContainer.addComponent(i, containerX[i]);
System.out.println("Component added to base Container @ " + i);
} catch (Exception e) {
System.out.println("Exception in drawAgendaListItem " + e);
}
}
featuredeventsForm.addComponent(baseContainer);
featuredeventsForm.invalidate();
featuredeventsForm.repaint();
System.out.println("All elements added and form repainted");
}
在上面的方法中,当我试图将布局分配给Container时,它会在第行引发NullPointerExceptionCCD_ 1。
我不明白为什么会发生这种情况,我也试图评论这几行,然后它在第containerX[i].getStyle().setPadding(0, 0, 2, 2);
行触发NullPointerException。
请帮忙。。。。
根据源代码,我的猜测是,实例化数组也会填充它。Java中的情况并非如此。
换句话说,如果您认为containerX看起来像:[new Container, new Container,..., new Container]
在内存中,这是不正确的。它实际上看起来像:[null,null,...,null]
我认为你需要添加
containerX[i] = new Container();
containerY[i] = new Container();
在循环开始时。
(也许您想将数组的内容实例化为Container的子类)