«Исправление» первых нескольких столбцов в таблице SWT, чтобы предотвратить их горизонтальную прокрутку - PullRequest
1 голос
/ 02 марта 2009

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

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

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

Ответы [ 2 ]

1 голос
/ 07 марта 2009

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

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

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

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

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

0 голосов
/ 26 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...