1

我正在使用TableCombo,当我按下下拉按钮时,会显示所有项目的列表。我想实现当前所选行在此列表中未突出显示(因为我根据项目类型使用不同的背景颜色,并且突出显示隐藏了所选项目的背景颜色)。我尝试使用SWT.NO_FOCUSSWT.HIDE_SELECTION标志创建表格,但它没有删除突出显示。有任何想法吗?

我试图在挥杆中找出类似荧光笔的东西,但我没有成功

4

2 回答 2

1

我刚刚找到了这个帖子,它几乎回答了我的问题。对于SWT.FULL_SELECTION突出显示由操作系统自动处理 - 请参阅Table.CDDS_ITEMPOSTPAINT(NMLVCUSTOMDRAW nmcd, int wParam, int lParam)Win32。

但是,可以通过样式常量修改此行为。对我来说正确的解决方案是一起使用SWT.FULL_SELECTION(可以选择整行)和SWT.NO_FOCUS(不使用深蓝色突出显示)和SWT.HIDE_SELECTION(隐藏所选项目的默认灰色背景颜色)标志。

遗憾的是,HIDE_SELECTIONSWT 不支持该标志Tree

于 2012-06-19T11:46:07.777 回答
0

如this SO answer中所建议的,可以禁用传递给的事件SWT.EraseItem

table.addListener(SWT.EraseItem, new Listener() {   
    @Override
    public void handleEvent(Event event) {
        event.detail &= ~SWT.SELECTED;
    }
});

table是我从 JFace 获得的 SWT 表TableViewer。不确定TableComboAPI。

于 2015-11-18T12:08:25.767 回答