РЕДАКТИРОВАТЬ: Вот код, основанный на предложении Макса
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);
}
}
}
});
Это перемещает выбранную строку в следующую строку, но не перемещает текстовое поле, т.е. после нажатия стрелки вниз это выглядит так:
Как установить текстовое поле для ячейки в определенной строке?