Исправление первых нескольких столбцов в таблице SWT, чтобы они не прокручивались по горизонтали.

Мы реализовали табличный редактор с таблицей дерева SWT. Он в значительной степени делает то, что мы хотим, за исключением того, что мы не можем найти способ гарантировать, что первые несколько столбцов останутся на своих местах, когда пользователь прокручивает страницу по горизонтали (чтобы можно было идентифицировать редактируемую строку).

Существует ряд сторонних элементов управления таблицами в разной степени незавершенными или заброшенными, а также фрагмент, показывающий, как использовать две таблицы (которые теряют синхронизацию при вертикальной прокрутке).

Каков наилучший способ решить эту проблему?


person Community    schedule 02.03.2009    source источник


Ответы (2)


Этот «официальный» SWT snippet делает то, что вы хотите, по крайней мере, на моей машине - он не рассинхронизируется при вертикальной прокрутке. Но цена второй полосы прокрутки - некрасиво. Чтобы этого не произошло, можно добавить стиль SWT.NO_SCROLL в конструктор левой таблицы.

Чтобы улучшить эту вещь, вам нужно будет добавить прослушиватель на SWT.Traverse в обе таблицы, который синхронизирует их, если пользователь перемещается с помощью клавиш, примерно так:

  leftTable.addListener(SWT.Traverse, new Listener() {

     public void handleEvent( Event event ) {
        rightTable.setTopIndex(leftTable.getTopIndex());
     }
  });

Я бы не стал использовать другую реализацию таблицы, поскольку вы теряете самое большое преимущество, которое у вас есть с SWT: использование собственного виджета, который выглядит и чувствует себя «правильным» в каждой ОС. Если вы все равно хотите это сделать, используйте Grid из проекта Nebula. гораздо более зрелым, чем подразумевает альфа-тег. Однако не знаю, может ли он делать то, что вы хотите.

person the.duckman    schedule 06.03.2009

«проблема синхронизации» появляется только на SWT на базе MacOs. Если вашей целевой платформой является Windows, у вас не должно возникнуть проблем с данным фрагментом SWT. В обеих таблицах будет больше слушателей, чтобы синхронизировать все происходящие события (свернуть, развернуть, прокрутить мышью и т. д.).

person thomasee    schedule 25.05.2009