我们应用中的一个下拉框需要显示固定宽度和非固定宽度的字体名称。我想在它们之间添加一个无法选择的分隔符:
-- Fixed-width fonts --
Courier New
Lucida Console
...
-- Non-fixed-width fonts --
Arial
...
使用SWT可以实现吗?
简短的答案是否定的。无论是Combo
还是CCombo
都不允许将项目标记为不可选择。
但是,通过合理的努力应该可以实现一个自定义组合微件,可以显示不可选择的项目。
如果您查看CCombo
代码,您会发现它不是本地微件,而是由其他SWT微件组成的。它使用一个List
作为下拉控件来显示项目。
如果您在下拉微件中使用ScrolledCompposite
,则可以将Label
放置在其中以表示项目。不可选择的项目不需要额外的工作。对于可选择的项目,您可以使用鼠标监听器来突出显示悬停时的Label
并处理选择。
如果您计划显示大量项目(无论如何都不应该在组合框中这么做),创建的标签数可能会影响性能。
或者,您可能想尝试Nebula TableCombo。可能可以调整表格以显示某些项目为不可选择(使用自定义绘制的项目),并且可以禁用这些项目的选择行为。