我需要显示一个几乎无限滚动的交互式小部件列表,并在添加新数据或用户滚动到未缓存区域时根据需要添加/删除它们。
TreeView (如被问及这里)不是选项,因为,我需要完整的小部件作为项目(由具有多个操作等的标准小部件组成,但 CellRenderer 不适合这个)
更糟糕的是,我事先不知道我的小部件的高度(虽然变化不大),所以使用 VBox 可能会导致跳跃。
使用滚动条应该仍然感觉好像列表是有限的(即仅在滚动完成后更新,因此滚动按钮不会跳离鼠标),并且在调整窗口大小和窗口布局更新时,滚动位置不应该改变太多(焦点小部件应该保持在原处,除非当然焦点小部件被滚动了......)。
最好的方法是什么?甚至当需要添加新的小部件时,甚至可能只是向我发送信号的库?
或者可以强制 ListView 以不太讨厌的方式执行此操作?(即在屏幕外缓冲区上绘制,使用 CellRenderer 将其复制到单元格中,将鼠标/键盘事件中继到实际的小部件?)