如何在SWT中向组合框中添加不可选择的分隔符

Mot*_*Mot 7 swt combobox

我们的应用程序中的组合框应显示固定宽度和非固定宽度的字体名称.我想在它们之间添加一个不可选择的分隔符:

-- Fixed-width fonts --
Courier New
Lucida Console
...
-- Non-fixed-width fonts --
Arial
...
Run Code Online (Sandbox Code Playgroud)

这可能与SWT有关吗?

Rüd*_*ann 0

最简洁的答案是不。既Combo不允许也CCombo不允许将项目标记为不可选择。

但应该可以实现一个自定义组合小部件,该小部件可以通过合理的努力显示不可选择的项目。

如果您查看CCombo代码,您会发现它不是本机小部件,而是由其他 SWT 小部件组成。它使用 aList作为下拉控件来显示项目。

如果您使用 aScrolledCompposite作为下拉小部件,则可以Label在其中放置 s 来表示项目。不可选择的项目不需要额外的工作。对于可选择的项目,您可以使用 s 的鼠标侦听器Label在悬停时突出显示它们并处理选择。

如果您计划显示大量项目(无论如何都不应该在组合框中显示),则创建的标签数量可能会对性能产生影响。

或者,您可能想尝试Nebula TableCombo。可能可以调整表格以将某些项目显示为不可选择(使用自定义绘制的项目),并且可以禁用这些项目的选择行为。