gpt4 book ai didi

widget - SWT 使用 TAB 在 TableViewer 中移动

转载 作者:行者123 更新时间:2023-12-02 05:21:39 36 4
gpt4 key购买 nike

Another similar StackOverflow question在一定程度上帮助了我。

我的 TableViewer 单元格包含 bool 小部件 editors(不是您常用的检查按钮小部件,而是一个切换按钮,可以是“选中”/“未选中”)。




表格必须:
- 选择单元格时始终显示编辑器;
- 当单元格焦点丢失时禁用编辑器;
- 当按下 TAB 时,正确移动到下一个 row




看似简单,实践起来却很难。很多监听器冲突(TAB 不起作用)。

稍后编辑:

我已经设法解决了大部分错误,但这个错误仍然让我感到困惑。如果我用鼠标更改小部件的值,然后按TAB 进行遍历,焦点会跳转到second next row,而不是下一个。但是如果我使用空格键更改编辑器的值,那么遍历就可以正常工作;它会跳转到下一行。

我应该如何调试那些该死的监听器?

最佳答案

为了便于开发,您可以在 JFace 中使用一些辅助类,而不必处理 Tab 键或鼠标单击的事件处理。下面是一段可以帮助您入门的代码段:

TableViewer viewer = ...

TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(viewer, new FocusCellOwnerDrawHighlighter(viewer));

ColumnViewerEditorActivationStrategy activationSupport = new ColumnViewerEditorActivationStrategy(viewer) {
protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
if (event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION) {
EventObject source = event.sourceEvent;
if (source instanceof MouseEvent && ((MouseEvent)source).button == 3)
return false;
}
return super.isEditorActivationEvent(event) || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.CR);
}
};

TableViewerEditor.create(viewer, focusCellManager, activationSupport, ColumnViewerEditor.TABBING_HORIZONTAL |
ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR |
ColumnViewerEditor.TABBING_VERTICAL |
ColumnViewerEditor.KEYBOARD_ACTIVATION);

关于widget - SWT 使用 TAB 在 TableViewer 中移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13747560/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com