我有一个 ListField,它是一个很长的垂直项目列表,您可以选择和删除。删除项目后,列表会滚动回顶部。我可以使用 setSelectedIndex(rowIndex) 返回到我一直在查看的列表中的位置,但这不会保留我一直在屏幕上查看的行。相反,该行出现在屏幕底部,因为一旦正确的索引出现在屏幕上,它就会停止滚动。
有没有办法可以删除一行并保留我的列表视图/位置?
我有一个 ListField,它是一个很长的垂直项目列表,您可以选择和删除。删除项目后,列表会滚动回顶部。我可以使用 setSelectedIndex(rowIndex) 返回到我一直在查看的列表中的位置,但这不会保留我一直在屏幕上查看的行。相反,该行出现在屏幕底部,因为一旦正确的索引出现在屏幕上,它就会停止滚动。
有没有办法可以删除一行并保留我的列表视图/位置?
刚刚意识到我使用了错误的 ListField.setSize() 函数。
ListField.setSize(int size) 将焦点发送回列表顶部,但如果需要,您可以使用 ListField.setSize(int size, int focusRow) 将焦点留在“currentIndex”。希望这可以帮助某人
保存列表中的当前位置(通过myListField.getSelectedIndex()
),比如说
int myVar = myListField.getSelectedIndex();
除去项目
使用myVar
, 并使用当前列表大小和值通过使用另一个线程myVar
计算和设置列表索引,并为此操作避免在更新应用程序 UI 时出现事件锁定问题。myListField.setSelectedIndex(int index);
Application.invokeLater(Runnable thread);
就是这样。