JFace - выбрать редактируемую ячейку по заданному индексу строки? - PullRequest
2 голосов
/ 22 июля 2011

РЕДАКТИРОВАТЬ: Вот код, основанный на предложении Макса

    editor.getControl().addKeyListener(new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent e) {
            Table table = viewer.getTable();
            int currentIndex = table.getSelectionIndex();

            if (e.keyCode == SWT.ARROW_DOWN) {
                if (currentIndex != table.getItemCount() - 1) {
                    table.setSelection(currentIndex+1);

                    IStructuredSelection sel = (IStructuredSelection) viewer.getSelection();
                    Object rowObj = sel.getFirstElement();

                    viewer.editElement(rowObj, columnIndex);
                }
            }
        }
    });

У меня есть JFace TableViewer со столбцом, который можно редактировать (сделано путем реализации EditingSupport).

Я хочу, чтобы пользователь мог нажимать стрелки вверх / вниз при редактировании ячейки, чтобы перейти к строке над / под ней.Вот что у меня есть:

final TextCellEditor editor = new TextCellEditor(viewer.getTable());

editor.getControl().addKeyListener(new KeyAdapter() {
    @Override
    public void keyReleased(KeyEvent e) {
        if (e.keyCode == SWT.ARROW_DOWN) {
            Table table = viewer.getTable();
            int currentIndex = table.getSelectionIndex();

            if (currentIndex != table.getItemCount() - 1) {
                table.setSelection(currentIndex+1);
            }
        }
    }
});

Это перемещает выбранную строку в следующую строку, но не перемещает текстовое поле, т.е. после нажатия стрелки вниз это выглядит так:

Как установить текстовое поле для ячейки в определенной строке?

1 Ответ

6 голосов
/ 22 июля 2011

Используйте метод:

org.eclipse.jface.viewers.ColumnViewer.editElement(Object element, int column)
...