1

EclipseでLWUITを使用してj2meを使用してs60を開発しています。

リスト項目を描画し、Lwuit リストを使用するのではなく手動でリストを作成しようとするこのメソッドを作成しています。最後の質問に投稿したように、ここにリンクがあるため.. 理由はわかりませんが、パフォーマンスが低下します。

したがって、以下の方法では、2つのラベルをlayoutX Containerに追加し、そのConatinerをlayoutY Containerに追加し、その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");

    }

上記の方法で、コンテナにレイアウトを割り当てようとすると、行で NullPointerException が発生します containerX[i].setLayout(layoutX);

なぜそれが起こっているのかわかりません。また、その行にコメントを付けようとしたところ、行で NullPointerException が発生しましたcontainerX[i].getStyle().setPadding(0, 0, 2, 2);

助けてください ....

4

1 に答える 1

1

ソース コードに基づいて、配列をインスタンス化すると配列も作成されると思われると思います。Java ではそうではありません。


[new Container, new Container,..., new Container]
つまり、containerX がメモリ内で次のように見えると考える場合、それは正しくありません。実際には次のようになります。
[null,null,...,null]

追加する必要があると思います

containerX[i] = new Container();
containerY[i] = new Container();

ループの最初に。

(おそらく、配列の内容を Container のサブクラスとしてインスタンス化する必要があります)

于 2012-07-13T09:59:04.800 に答える