Java SWT如何使表格通过单击高亮显示整行,并通过双击编辑单元格?
这里是SWT新手。所以,我想要的是能够高亮显示整行,同时能够选择多行,并使其能够双击编辑单元格。是否需要Focuscell经理?相关代码: 编辑器激活事件Java SWT如何使表格通过单击高亮显示整行,并通过双击编辑单元格?,java,eclipse,swt,jface,Java,Eclipse,Swt,Jface,这里是SWT新手。所以,我想要的是能够高亮显示整行,同时能够选择多行,并使其能够双击编辑单元格。是否需要Focuscell经理?相关代码: 编辑器激活事件 final ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(this) { @Override protected boolean isEditorActivationEven
final ColumnViewerEditorActivationStrategy actSupport =
new ColumnViewerEditorActivationStrategy(this)
{
@Override
protected boolean isEditorActivationEvent
(ColumnViewerEditorActivationEvent event)
{
return event.type ==
ColumnViewerEditorActivationEvent.TRAVERSAL
|| event.eventType ==
ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
|| event.eventType ==
ColumnViewerEditorActivationEvent.KEY_PRESSED
|| event.eventType ==
ColumnViewerEditorActivationEvent.PROGRAMMATIC;
}
};
创建TableViewerEditor
TableViewerEditor.create(this,
mgr,
actSupport,
ColumnViewerEditor.TABBING_HORIZONTAL|
ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR|
ColumnViewerEditor.TABBING_VERTICAL|
ColumnViewerEditor.KEYBOARD_ACTIVATION);
经理(focusCellManager)代码:
tableViewer(在前面的snipper中没有出现,因为tableViewer由另一个类扩展,我们使用另一个类,所以我不想让您感到困惑):
在表列上使用
EditingSupport
,并结合以下TableViewerEditor,似乎对我很有效:
TableViewer viewer = new TableViewer(tableComp, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(viewer) {
@Override
protected boolean isEditorActivationEvent(final ColumnViewerEditorActivationEvent event) {
return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
|| event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
|| event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
|| event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
}
};
int feature = ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_HORIZONTAL
| ColumnViewerEditor.KEYBOARD_ACTIVATION
| ColumnViewerEditor.TABBING_CYCLE_IN_VIEWER;
TableViewerEditor.create(viewer, actSupport, feature);
听起来你只需要使用
编辑支持
(TableViewerColumn.setEditingSupport)而不使用其他类。我在这方面还是个新手,我知道你是传奇人物,因为我在SWT上看到过你的15篇文章。你能给我一些关于如何使用它和哪些类我不需要的提示吗?看看vogella.com上的文章,谢谢!但是,这将如何防止单击一次突出显示或编辑单元格?我的一个问题是,我设置了双击来编辑单元格,这是可行的,但单击仍然会高亮显示单元格(无需编辑),而不是整行。这甚至是在设置了完整的选择位之后。嗨,格雷格。非常感谢你的回答,它真的很有帮助!然而,我有一个新问题。每当我向表中添加新行时,它都会自动高亮显示,这对我来说并不是什么问题。问题是,我添加的每一行都保持高亮显示,因此我最终得到一块蓝色高亮显示的行。你怀疑可能是什么问题吗?请不要在评论中提出新问题,而是提问。
TableViewer vwr = new TableViewer(tableComposite,SWT.BORDER|SWT.FULL_SELECTION|SWT.MULTI);
TableViewer viewer = new TableViewer(tableComp, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(viewer) {
@Override
protected boolean isEditorActivationEvent(final ColumnViewerEditorActivationEvent event) {
return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
|| event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
|| event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
|| event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
}
};
int feature = ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_HORIZONTAL
| ColumnViewerEditor.KEYBOARD_ACTIVATION
| ColumnViewerEditor.TABBING_CYCLE_IN_VIEWER;
TableViewerEditor.create(viewer, actSupport, feature);