我想要做的是能够在表格中的元素之间切换。
我目前正在创建我的表,如下所示。
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());但我不知道如何设置表格。其他的工作就像编辑列,显示数据等,只是停留在这最后一部分。
如果我错过了明显的文档或javadocs我的道歉,甚至指向这些将是很好的。
发布于 2009-10-07 17:07:33
我认为在默认情况下,tab不会在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);此外,正如derBiggi建议的那样,需要将侦听器添加到表对象,而不是TableViewer。
发布于 2009-10-09 14:43:36
尽管JFace发布的解决方案是非常低级的,可能会起作用(我还没有测试过它),但它为你提供了一个解决这个特定问题的框架。请参阅org.eclipse.jface.viewers.TableViewerFocusCellManager和org.eclipse.jface.viewers.CellNavigationStrategy类来解决此问题。
发布于 2016-02-29 12:03:21
我无法使用TraverseListener获得所需的行为(它不会在表中遍历),并且我很难让它与FocusCellManager和CellNavigationStrategy一起工作。我最终找到了这个解决方案,它使我能够在一行中按tab键从一列到另一列,并自动激活编辑器。
Viewer viewer = ...
TableViewerFocusCellManager focusCellManager =
new TableViewerFocusCellManager(
viewer,
new FocusCellHighlighter(viewer) {});
ColumnViewerEditorActivationStrategy editorActivationStrategy =
new ColumnViewerEditorActivationStrategy(viewer) {
@Override
protected boolean isEditorActivationEvent(
ColumnViewerEditorActivationEvent event) {
ViewerCell cell = (ViewerCell) event.getSource();
return cell.getColumnIndex() == 1 || cell.getColumnIndex() == 2;
}
};
TableViewerEditor.create(viewer, focusCellManager, editorActivationStrategy,
TableViewerEditor.TABBING_HORIZONTAL);https://stackoverflow.com/questions/1500918
复制相似问题