Java SWT 重叠/多个 StyleRanges

标签 java swt styledtext

我在我的项目中使用了StyledText,其中有很多文本,根据某些事件可以有不同的样式,有时这些样式可以重叠,因此可以为一个文本设置代表黄色背景颜色的样式。已经具有红色前景色的 styleRange 的区域。

以下代码示例不代表闭源项目:

        text_1 = new StyledText(composite, SWT.BORDER);
        text_1.setBounds(10, 10, 320, 21);
        text_1.setText("1234567890abcdefghij");
        text_1.setStyleRange(new StyleRange(0, 9, Display.getDefault().getSystemColor(SWT.COLOR_RED), null));
        text_1.setStyleRange(new StyleRange(2, 9, null,  Display.getDefault().getSystemColor(SWT.COLOR_YELLOW)));
        text_1.setSelection(3, 7);

0-9的第一个样式是具有红色前景色,2-9的第二个样式是具有黄色背景,我得到的是只有0-1会有红色前景色,而2- 9 将具有黑色前景色和黄色背景,而我想要的是 2-9 同时具有红色前景色和黄色背景。

结果:

How it really looks

我希望它看起来像:

How it should be

我的问题是,如何才能设置新的 styleRange 不会删除旧的样式范围,或者至少复制以前的特征(以防万一为空)?

谢谢。

最佳答案

样式范围不能重叠。您必须编写代码来组合它们重叠的范围,以实现您想要的效果。

如果您可以使用 JFace,则 TextPresentation 类可以合并重叠范围。您可以单独使用它,也可以与 TextViewerSourceViewer 类结合使用。

关于Java SWT 重叠/多个 StyleRanges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43452732/

相关文章:

java - JFace 数据绑定(bind)映射属性到 SWT 文本字段

java - 算二元递归吗?

java - 是否可以更轻松地检查方法是否被父类(super class)覆盖?

java - 是否可以将 SWT 组合嵌入到 JavaFX 场景中?

java - 您能否将 SWT 文本小部件的背景颜色明确设置为默认颜色?

java - SWT StyledText - 自动突出显示(或自动选择)

java - 将 AngularJS 应用程序与 Java Tapestry 平台集成 - Tapestry 引发标记错误

java - 将 CSV 文件导出到数组中

Java SWT TreeViewer 有一列需要 StyledText

java - 如何将 SWT StyledText 小部件的内容保存为 HTML?