2013-03-15 122 views
0

默認情況下,當用戶按向上或向下箭頭鍵時,JFace TableViewer會上下移動選擇。這在大多數情況下都是有意義的,但在我的應用程序中,業務邏輯將會不同。更改TableViewer的默認鍵盤綁定

如何覆蓋此行爲?我嘗試添加一個KeyListener並將其調用,但默認操作仍然發生:選擇更改。

回答

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);