【问题标题】:SWT TableCombo disable highlighting of selected itemSWT TableCombo 禁用所选项目的突出显示
【发布时间】:2012-06-21 06:48:11
【问题描述】:

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

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

【问题讨论】:

    标签: java swt highlighting


    【解决方案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 Tree 不支持 HIDE_SELECTION 标志。

    【讨论】:

    • 太棒了!不用等待..它似乎对Table/TableViewers 也不起作用.. U_U
    【解决方案2】:

    正如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。

    【讨论】:

      猜你喜欢
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多