1

選択および削除できるアイテムの長い垂直リストであるListFieldがあります。アイテムを削除すると、リストは一番上にスクロールして戻ります。setSelectedIndex(rowIndex)を使用して、表示していたリスト内の場所に戻ることができますが、これでは、画面上で表示していた行は保持されません。代わりに、正しいインデックスが画面に表示されるとスクロールが停止したため、行は画面の下部に表示されます。

行を削除してリストのビュー/スポットを保持する方法はありますか?

4

2 に答える 2

2

間違った ListField.setSize() 関数を使用していることに気付きました。

ListField.setSize(int size) はフォーカスをリストの先頭に戻しますが、必要に応じて ListField.setSize(int size, int focusRow) を使用してフォーカスを「currentIndex」のままにすることができます。これが誰かに役立つことを願っています

于 2012-04-26T17:28:26.540 に答える
1
  1. リスト内の現在の位置を保存します(経由myListField.getSelectedIndex())、としましょう

    int myVar = myListField.getSelectedIndex();

  2. アイテムを削除

  3. を使用myVarし、現在のリスト サイズとmyVar値を使用して計算し、myListField.setSelectedIndex(int index);別のスレッドを使用してリスト インデックスを設定Application.invokeLater(Runnable thread);し、アプリケーションの UI を更新する際のイベント ロックの問題を回避します。

それでおしまい。

于 2012-04-17T02:33:04.613 に答える