SWT TableCombo禁用所选项目的突出显示

时间:2012-06-19 08:40:55

标签: java swt highlighting

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

我试图在摇摆中找到类似荧光笔的东西,但我没有成功

2 个答案:

答案 0 :(得分:1)

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

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

遗憾的是,SWT HIDE_SELECTION不支持Tree标记。

答案 1 :(得分:0)

根据this SO answer的建议,可以禁用传递给SWT.EraseItem的事件:

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

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