13

私はGWTを初めて使用します。のインスタンスを使用したコンボボックスを使用する必要がある単純なGWTプログラムを作成していますValueListBox。そのコンボでは、1年の月を表す1から12までの数字をリストする必要があります。しかし、コンボはnull最後に値を追加します。null誰かがその値を削除する方法を教えてもらえますか?

    final ValueListBox<Integer> monthCombo = new ValueListBox<Integer>(new Renderer<Integer>() {

            @Override
            public String render(Integer object) {
                return String.valueOf(object);
            }

            @Override
            public void render(Integer object, Appendable appendable) throws IOException {
                if (object != null) {

                    String value = render(object);
                    appendable.append(value);
                }
            }
        });
    monthCombo.setAcceptableValues(getMonthList());
    monthCombo.setValue(1);

    private List<Integer> getMonthList() {
        List<Integer> list = new ArrayList<Integer>();

        for (int i = 1; i <= 12; i++) {
            list.add(i);
        }

        return list;
    }

ここに画像の説明を入力してください

4

2 に答える 2

25

setValue前に電話してくださいsetAcceptableValues

その理由は、値nullを呼び出すとsetAcceptableValuesValueListBox任意の値(通常はに渡されるsetValue)が受け入れ可能な値のリストに自動的に追加されるためです(値が実際に設定され、ユーザーが選択でき、ユーザーが再選択できるようになります)。別の値を選択し、元の値に戻したい)。setValue許容値のリストに含まれる値を最初に呼び出すと、この副作用が無効になります。

http://code.google.com/p/google-web-toolkit/issues/detail?id=5477を参照してください

于 2012-06-24T10:32:21.373 に答える
2

この質問からの引用:

setAcceptableValuesは、現在の値(getValueによって返され、デフォルトはnull)をリストに自動的に追加することに注意してください(また、setValueは、必要に応じて、許容値のリストにも値を自動的に追加します)

したがって、次のようにsetValueとsetAcceptableValuesを呼び出す順序を逆にしてみてください。

monthCombo.setValue(1);
monthCombo.setAcceptableValues(getMonthList());
于 2012-06-24T10:32:25.260 に答える