0

默认情况下,当用户按下向上或向下箭头键时,JFace TableViewer 会上下移动选择。大多数情况下这是有道理的,但在我的应用程序中,业务逻辑会有所不同。

如何覆盖此行为?我尝试添加一个 KeyListener 并调用它,但默认操作仍然发生:选择更改。

4

1 回答 1

0

我发现我必须使用 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);
于 2013-03-16T11:03:19.980 回答