2012-04-16 3 views
1

사용자가 선택 및 삭제할 수있는 긴 세로 목록 인 ListField가 있습니다. 항목을 삭제하면 목록이 다시 맨 위로 스크롤됩니다. setSelectedIndex (rowIndex)를 사용하여 내가 본 목록의 지점으로 돌아갈 수는 있지만 화면에 표시된 행은 보존되지 않습니다. 대신 화면에 올바른 색인이 나타나면 스크롤이 중지되어 행이 화면 하단에 나타납니다.Blackberry - 항목을 제거한 후 ListField가 스크롤하지 못하도록합니다.

행을 제거하고 목록의 내보기/자리를 유지할 수있는 방법이 있습니까?

답변

2

그냥 잘못된 ListField.setSize() 함수를 사용하고 있다는 것을 깨달았습니다.

ListField.setSize (int size) ListField.setSize (int size)는 목록의 맨 위로 포커스를 보내지 만 원하는 경우 ListField.setSize (int size, int focusRow)를 사용하여 "currentIndex"에 포커스를 둘 수 있습니다. 호프가 도움이 되었기를 바랍니다.

1
  1. 저장 (myListField.getSelectedIndex()를 통해) 목록의 현재 위치,

    INT myVar에 = myListField.getSelectedIndex() 가정 해 봅시다;

  2. 제거 항목

  3. 사용 myVar 및 이벤트가 응용 프로그램의 UI를 업데이트시 잠금 문제를 방지하기 위해이 작업을 위해 myListField.setSelectedIndex(int index); 사용을 통해 다른 스레드와 Application.invokeLater(Runnable thread);를 현재 목록의 크기와 myVar 값 계산 및 설정리스트 인덱스를 사용하여.

그렇습니다.

+0

이렇게하면 올바른 행에 포커스가 표시되지만 화면에 표시된 행은 여전히 ​​달라집니다. 예를 들어, 5-10 행을보고 있지만 removeRow (8) 이후에 setSelectedIndex (8)는 화면을 3-8 행으로 가져옵니다. – Chicowitz

+0

정확히 무슨 뜻인지 알지 못했습니다. 특정 개체에 포커스를 설정하려면 행을 제거하고 발견 된 목록 인덱스에 포커스를 설정 한 경우 목록에서이 개체를 찾습니다. –

관련 문제