我正在使用TableCombo,当我按下拉按钮时,会显示所有项目的列表。我想实现当前选择的行未在此列表中突出显示(因为我根据项目的类型使用不同的背景颜色,并且突出显示隐藏所选项目的背景颜色)。我尝试使用SWT.NO_FOCUS
和SWT.HIDE_SELECTION
标志创建表,但它没有删除突出显示。有任何想法吗?
我试图在摇摆中找到类似荧光笔的东西,但我没有成功
答案 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。