TableViewer中字段之间的选项卡

PSU*_*rdi 6 java eclipse swt jface

我想做的是能够在表格中的元素之间进行选项卡.

我目前正在创建这样的表.

this.tableViewer = 
            new TableViewer(parent , SWT.FULL_SELECTION);

   tableViewer.setUseHashlookup(true);
        table = tableViewer.getTable();

        GridData gridData = new GridData(GridData.FILL_BOTH);
        gridData.grabExcessVerticalSpace = true;
        table.setLayoutData(gridData);

        table.setLinesVisible(true);
        table.setHeaderVisible(true);

        ...

   /** Create the Cell Editor Array - will hold all columns **/
        editors = new CellEditor[table.getColumnCount()];
        /** Cell Editor Row 1 **/


  /** Set the column properties **/
        tableViewer.setColumnProperties(columnNames);

        /** Assign the cell editors to the viewer **/
        tableViewer.setCellEditors(editors);

        /** Set the cell modifier for the viewer **/
        tableViewer.setCellModifier(new MyCellModifier(this));
        //Create the Table Viewer

        /** Table Viewer Content and Label Provider **/
        tableViewer.setContentProvider(new MyContentProvider(this));
        tableViewer.setLabelProvider(new MyLabelProvider());
Run Code Online (Sandbox Code Playgroud)

但我不知道如何设置表格.其他所有工作都可以编辑列,显示数据等.只是停留在最后一部分.

如果我错过了明显的文档或javadocs - 我的道歉,甚至指出那些将是伟大的.

and*_*nka 9

尽管thehiatus发布的解决方案水平非常低并且可能会起作用(我还没有测试过),但JFace为您提供了解决此特定问题的框架.请参阅org.eclipse.jface.viewers.TableViewerFocusCellManager 以及org.eclipse.jface.viewers.CellNavigationStrategy类来解决此问题.


the*_*tus 7

我认为默认选项卡不会在swt表中从一个单元跳转到另一个单元格.相反,它会遍历下一个控件.因此,您还需要告诉它在按Tab键时不要遍历

KeyListener keyListener = new KeyLisener()
{
    public void keyPressed(KeyEvent evt)
    {
        if (evt.keyCode == SWT.TAB)
        {
            // There are numerous setSelection methods.  I'll leave this to you. 
            tableViewer.getTable().setSelection(...)
        }
    }

    public void keyReleased(KeyEvent evt){}
}

TraverseListener traverseListener = new TraverseListener()
{
    public void keyTraversed(TraverseEvent evt)
    {
        if (evt.keyCode == SWT.TAB)
            evt.doit = false;
    }
}

tableViewer.getTable().addKeyListener(keyListener);
tableViewer.getTable().addTraverseListener(traverseListener);
Run Code Online (Sandbox Code Playgroud)

另外,正如derBiggi建议的那样,需要将侦听器添加到Table对象,而不是TableViewer.