Как сделать дискретную (построчную) прокрутку в SWT Table
(JFace TableViewer
)?
Мне нужно, чтобы Table
прокручивалось «по одной непрерывной строке за раз», помещая полную ячейку сверху.
Я использую JFace TableViewer
, но я не нашел способа добавить в него прослушиватель мыши, поэтому сделал что-то вроде этого:
TableViewer table = new TableViewer(shell, SWT.BORDER_DASH |SWT.FULL_SELECTION);
//some visual settings ommited here
table.getControl().addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseScrolled(MouseEvent e) {
Table sourceControl = (Table)e.getSource();
System.out.println(e.count);
if(e.count >=0)
sourceControl.setTopIndex(sourceControl.getTopIndex()-1);
else
sourceControl.setTopIndex(sourceControl.getTopIndex()+1);
}
});
Но оказалось, что, во-первых, если e.count
равно 3 и более, некоторые строки пропускаются. Во-вторых, иногда setTopIndex()
строки размещаются неправильно.
Можно ли это сделать более точным образом?