默认情况下,当用户按下向上或向下箭头键时,JFace TableViewer 会上下移动选择。大多数情况下这是有道理的,但在我的应用程序中,业务逻辑会有所不同。
如何覆盖此行为?我尝试添加一个 KeyListener 并调用它,但默认操作仍然发生:选择更改。
我发现我必须使用 TableViewerFocusCellManager 和 CellNavigationStrategy。我希望 FocusCellManager 是 TableViewer 的一个属性,但事实并非如此。显然,FocusCellManager 在幕后进行接线。
CellNavigationStrategy navigationStrategy = new CellNavigationStrategy() {
@Override
public boolean shouldCancelEvent(ColumnViewer viewer, Event event) {
return true;
}
@Override
public boolean isNavigationEvent(ColumnViewer viewer, Event event) {
return false;
}
};
TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(tableViewer, new FocusCellOwnerDrawHighlighter(tableViewer), navigationStrategy);